Re: problemas con versión de ssl

39 views
Skip to first unread message

Juan Bagnera

unread,
Nov 11, 2014, 11:31:41 AM11/11/14
to pyaf...@googlegroups.com
Hola Juan Manuel, ahora que lo tengo funcionando no lo quiero ni tocar pero lo voy a tener muy en cuenta para cuando me vuelva a suceder, muchas gracias por el aporte.


Saludos, Juan Bagnera.

On 11/11/14 13:06, jmmart...@gmail.com wrote:
Hola Juan,

Me pasó lo mismo, tuve muchos inconvenientes con este tema. El problema parece ser de OpenSSL y no de httplib2, por lo que el fix de forzar la versión desde esta librería funciona a veces y otra no (por lo menos en mi caso).

La solución que encontré, que no me gusta pero funciona, es instalar la versión 0.98 de OpenSSL. En mi caso, que uso Debian Wheezy, con sólo agregar los repositorios backport se pueden instalar los paquetes necesarios, lo que incluye la versión 2.6 de Python.

Espero te sirva para futuras referencias.

Saludos cordiales,
Juan Manuel.

El lunes, 15 de septiembre de 2014 19:32:12 UTC-3, Juan Bagnera escribió:
Tenemos un sistema de facturación electrónica que corre en linux.

Hace unos cuantos meses que venimos teniendo un problema con las
versiones de ssl en algunos servidores de producción.

El problema parece ser que algunos sitios https solo aceptan protocolo
SSL v3. No tengo claro porqué desde algunas máquinas funciona y desde
otras es necesario forzar la utilización de la versión 3.

El error se lo puede detectar de la siguiente forma:
 
{{{

juan@buenosaires ~$ wget
https://servicios1.afip.gov.ar/wsfexv1/service.asmx?WSDL
--2014-09-15
19:07:55--
https://servicios1.afip.gov.ar/wsfexv1/service.asmx?WSDL
Resolviendo servicios1.afip.gov.ar... 200.1.116.53
Conectando con servicios1.afip.gov.ar[200.1.116.53]:443... conectado.

No responde
y en cambio la siguiente instrucción si responde:
juan@buenosaires ~/src/colofon/client/ui $ wget --secure-protocol=SSLv3
https://servicios1.afip.gov.ar/wsfexv1/service.asmx?WSDL
--2014-09-15
19:08:11--
https://servicios1.afip.gov.ar/wsfexv1/service.asmx?WSDL
Resolviendo servicios1.afip.gov.ar... 200.1.116.53
Conectando con servicios1.afip.gov.ar[200.1.116.53]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 55131 (54K) [text/xml]
Grabando a: "service.asmx?WSDL.4"

100%[=====================================================================================================================================================>]
55.131      --.-K/s   en 0,03s

2014-09-15 19:08:11 (1,68 MB/s) - "service.asmx?WSDL.4" guardado
[55131/55131]

}}}

En las ultimas pruebas que realice el ambiente de homologación se
comporta diferente del de producción respondiendo sin la necesidad de
forzar el uso de ssl v3:
{{{
juan@buenosaires ~$ wget
https://wsWhomo.afip.gov.ar/wsfexv1/service.asmx?WSDL
--2014-09-15
19:05:39--
https://wswhomo.afip.gov.ar/wsfexv1/service.asmx?WSDL
Resolviendo wswhomo.afip.gov.ar... 200.1.116.57
Conectando con wswhomo.afip.gov.ar[200.1.116.57]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 55125 (54K) [text/xml]
Grabando a: "service.asmx?WSDL.3"

100%[=====================================================================================================================================================>]
55.125      --.-K/s   en 0,03s

2014-09-15 19:05:39 (1,76 MB/s) - "service.asmx?WSDL.3" guardado
[55125/55125]

}}}

Habiamos encontrado una solución a esto editando la librería httplib2
para que fuerce el uso de ssl versión 3 de esta forma:

{{{

en /usr/lib/python2.7/site-packages/httplib2/__init__.py

           # doesn't expose the necessary knobs. So we need to go with the default
           # of SSLv23.
           return ssl.wrap_socket(sock, keyfile=key_file, certfile=cert_file,
!                                cert_reqs=cert_reqs, ca_certs=ca_certs)
   except (AttributeError, ImportError):
       ssl_SSLError = None
       def _ssl_wrap_socket(sock, key_file, cert_file,
--- 77,83 ----
           # doesn't expose the necessary knobs. So we need to go with the default
           # of SSLv23.
           return ssl.wrap_socket(sock, keyfile=key_file, certfile=cert_file,
!                                cert_reqs=cert_reqs, ca_certs=ca_certs, ssl_version=3)
   except (AttributeError, ImportError):
       ssl_SSLError = None
       def _ssl_wrap_socket(sock, key_file, cert_file,


ssl.wrap_socket hay que llamarlo con ssl_version=3, debería hacerlo de forma automática pero no lo llama con ssl_version=3.

}}}


Este cambio nos soluciono el problema por un tiempo pero resulta que
ahora por algún motivo se rompe la conexión con la url de afip dando
time_out después de transcurrir un determinado tiempo de tener corriendo
el servidor, teniendo que a mano levantar el servidor nuevamente para
que responda la web de afip.

¿a alguien le paso lo mismo? ¿alguna idea de como solucionarlo?


Saludos,  Juan Bagnera.



Reply all
Reply to author
Forward
0 new messages