Vinculación Guarani 2.8 con Kolla - WSF sobre SSL

Hola a todos, no se si alguno estará en tema, pero desde la UNLP hicimos finalmente andar la integración de Kolla con Guarani 2.8.1 utilizando Debian en su versión estable compilando todo y está todo funcionando correctamente.

Pero tengo un problema que ayer lo detecté luego de dos horas de debugging que tiene que ver cuando está el sistema de Kolla sobre SSL y no sobre HTTP plano como está en los ejemplos de configuración. Sin SSL funciona todo bien.

Paso a explicar el tema. En el archivo de Guarani donde se configuran los servicios web:
root@psicologia:~# cat /var/www/guarani28/instalacion/servicios_web_config.php

<?php return array ( 'kolla' => $configuracion = array( 'url' => "https://kolla.unlp.edu.ar/kolla/servicios.php/habilitaciones", 'seguro' => true, //usa o no los certificados. Por omision es Verdadero! 'clave_publica' => \siu\bootstrap::get_dir_instalacion()."/servicios_web/publica.crt", //local 'clave_privada' => \siu\bootstrap::get_dir_instalacion()."/servicios_web/privada.key", //local 'certificado_servicio' => \siu\bootstrap::get_dir_instalacion()."/servicios_web/consumidos/kolla.crt", //server externo ) ); Si la url está con SSL, no funciona. Tengo que pasar el servidor de kolla a funcionar sin SSL para hacer la conexión. Mirando los logs de WSF encuentro que figura: [Tue Jul 1 18:37:26 2014] [debug] http_transport_sender.c(241) ctx_epr:https://kolla.unlp.edu.ar/kolla/servicios.php/habilitaciones [Tue Jul 1 18:37:26 2014] [debug] http_transport_sender.c(776) using axis2 native http sender. [Tue Jul 1 18:37:26 2014] [debug] http_sender.c(494) msg_ctx_id:urn:uuid:e50c8e7c-0167-1e41-3b3f-000c292cde8a [Tue Jul 1 18:37:26 2014] [debug] http_transport_utils.c(3794) No session map stored [Tue Jul 1 18:37:26 2014] [info] [ssl client] CA certificate not specified [Tue Jul 1 18:37:26 2014] [error] ssl/ssl_utils.c(50) Cannot find certificates [Tue Jul 1 18:37:26 2014] [error] ssl/ssl_stream.c(99) Error occurred in SSL engine [Tue Jul 1 18:37:26 2014] [error] http_client.c(294) Data stream creation failed for Host kolla.unlp.edu.ar and 443 port [Tue Jul 1 18:37:26 2014] [error] http_client.c(560) Client data stream null or socket error for host kolla.unlp.edu.ar and 443 port [Tue Jul 1 18:37:26 2014] [error] http_client.c(562) A read attempt(HTTP) for the reply without sending the reque Entonces, el tema es ver cómo le indico al WSF (supongo tocando código de guarani) para poder indicarle que use SSL y que no chequee el certificado o algo así... Alguno lo ha visto? Gracias Alejandro

Hola, creo que pasando un parámetro más , como hacen acá:

https://wso2.org/jira/browse/WSFPHP-383

En el archivo “/src/siu/lib/kernel/util/ws_cliente.php”, cuando se crea el objeto WSClient, si se agrega al array opciones[‘WSClient’] con el path al certificado de la CA que emitió el certificado del servidor web que contiene la aplicación Kolla.

Esto está en el src de SIU y no lo quiero emparchar directamente acá. Recomiendo agregar opciones para configurar esto en servicios_web_config.php y luego modificar el ws_cliente.php para tomar los valores de ahí.

Gracias
Alejandro

Hola,

Disculpame, recién leo este mensaje.

Te agradezco todo el tiempo que le dedicaste, y el feedback que nos has dado. La verdad que la librería terminó siendo muy mala, y en ciertos casos in-debuggeable. Actualmente el estado de la librería en el SIU es ‘deprecado’, por lo que próximamente va a ser reemplazada.

Estimo que con el reemplazo van a desaparecer la mayoría de estos problemas de instalación y configuración. Voy a hacer algunas pruebas con ssl de ante mano.

Saludos!

Alejandro, perdón la demora también en este feedback. La verdad que sí, la librería me complicó bastante, y más aún cuando ahora migramos a la versión 2.8.3, tuve que empezar a comparar los archivos que tocamos desde UNLP y están fuera de las personalizaciones.

Tocamos varias cosas, todas pensando en soporte en proxy reverso y en SSL.

Saludos,
Alejandro

Perfecto. Te confirmo ya que la versión 2.9 de Guaraní con la versión 3.5 de Kolla no van a usar más esa librería. El ssl estaría funcionando out-of-the-box (usamos la librería cliente Guzzle).

Respecto al proxy reverso no se que cambios necesitan pero podriamos ir incorporandolos si es necesario. En principio nos deshicimos del problema de los cross-domain por lo que 1 url para Kolla alcanzaría para todas las instalaciones de guaraní.

Cuando comiencen a hacer pruebas en desarrollo de esas versiones no dudes en contactarnos.

Gracias,
Saludos!!

Alejandro,

me alegro mucho que hayan sacado esa librería. Me dio muchísimos dolores de cabeza. Con respecto al proxy reverso , hemos tocado algunos archivos del core porque armaba mal las URL, entonces hemos tocado varias cosas.

Con respecto al cross-domain lo solucioné hace tiempo con un proxy reverso adelante de Kolla y Guarani para que me quede por ejemplo:

https:/www.guarani-derecho.unlp.edu.ar/
https:/www.guarani-derecho.unlp.edu.ar/kolla (Sistema kolla detrás de proxy reverso)

Te adjunto un ejemplo de como nos quedó el config.php (Está ofuscado), tiene muchos cambios fijate y los svn diff de las cosas que tocamos para que anden las URL.

Saludos,
Alejandro


diff.txt (1.07 KB)

config.txt (18.5 KB)

Alejandro,

tengo instalado un Guarani 2.9 y un Kolla 3.5. Veo que está la librería nueva, pero no se que espera que se configure desde lado de Kolla para la parte de rest y en el archivo servicios_web_config.php del lado de Guarani.

Veo que en ese php nuevo hay algo como esto:

‘consumidos’ => array(
‘kolla’ => array(
‘tipo’ => ‘rest’,
‘parametros’ => array( //usa cliente Guzzle, son opciones en formato guzzle
‘base_url’ => “http://localhost/kolla/trunk/rest/”,
‘defaults’ => array (
‘auth’ => array(‘ue_toba’,‘toba’), //user, password, segun guzzle
‘verify’ => false //no verificar cert ssl
)
)
),

Me parece que la base_url sería algo así? https://guarani29-testing.guarani.cespi.unlp.edu.ar/kolla/rest.php ? Que debo configurar y dónde del lado de Kolla?

Saludos,
Alejandro

Hola, me doy cuenta que tenemos toda la documentacion privada…

Para una idea general de como funciona podés mirar la presentación del taller. Fijate la parte de configuración.

Preguntame cualquier cosa. Te dejo referencias.

Saludos!

Presentación: https://drive.google.com/a/siu.edu.ar/folderview?id=0B-DDNAw6KrwVYzY4MXdhWDRGZzQ#

Kolla - servidor:: https://toba.siu.edu.ar/trac/toba/wiki/Referencia/Rest#Seguridad

G3w2 - cliente: las entradas son de Guzzle v4. https://github.com/guzzle/guzzle/blob/4.2.3/docs/clients.rst

La url la manejamos que termine en / para sacarle el ‘.php’ de las rutas de rest. En apache debería haber algo asi en el toba.conf de Kolla. En nginx tendría que haber algo similar. Basicamente hay que indicar que si no se especifica el tipo en algo que se llame rest, lo interprete como .php, asi lee rest.php. Sino armamos una regla de rewrite

	<Files rest>
		ForceType application/x-httpd-php
	</Files>

Finalmente: probá primero Kolla. Cuando funcione deberías verlo en la url
https://guarani29-testing.guarani.cespi.unlp.edu.ar/kolla/rest/
o
https://guarani29-testing.guarani.cespi.unlp.edu.ar/kolla/rest/encuestas?unidad_gestion=0