[pyar] Acceder a web service SOAP con SSL

David Arch daviddanielarch en gmail.com
Mie Jul 18 14:12:07 -03 2018


Parece que te falta agregar el certificado de cliente.
Parece que tenes dos cosas dando vuelta:
1) El server usa un cert autofirmado
2) El servidor pide un certificado de cliente

Para 1 podes o bien agregar el cert a los certs del sistema como decís que
ya hiciste o decirle al cliente de Python que no verifique el certificado.

Para 2 tenes que poner el path al certificado de cliente en el cliente de
Python, este certificado generalmente no es el mismo certificado que
agregaste al sistema.

Si pones el código que estas usando además de los errores va ser más fácil
diagnosticar el problema.

Saludos
David

El mié., 18 de jul. de 2018 1:01 p. m., Maxi <maxirobaina en gmail.com>
escribió:

> Hola Sebastián,
>
> El mié., 18 jul. 2018 a las 12:29, Sebastián Seba (<ssebastianj en gmail.com>)
> escribió:
>
>> El 17 de julio de 2018, 12:29, Maxi<maxirobaina en gmail.com> escribió:
>>
>>> Hola,
>>>
>>> Estoy intentando acceder al un webservice con SOAP. Para esto estoy
>>> usando zeep [1] y  python 3.6 en Ubuntu 16.04
>>> El servicio al que quiero acceder usa SSL y además una validación de
>>> usuario y contraseña. Me base en los ejemplos de la documentación para
>>> hacer las pruebas.
>>>
>>> EL problema es que me esta dando en siguiente error:
>>>
>>> Caused by SSLError(SSLError("bad handshake: Error([('SSL routines',
>>> 'tls_process_server_certificate', 'certificate verify failed')],)",),))
>>>
>>> Entonces lo que intente hacer si éxito es probar directamente desde la
>>> consola con el cliente openssl y obtengo la siguiente salida (son solo las
>>> primeras lineas)
>>>
>>> CONNECTED(00000003)
>>> depth=2 C = AR, ST = CABA, CN = CECBA-CA, O = CECBA, OU = Operaciones,
>>> mail = computos en mail.com.ar
>>> verify error:num=19:self signed certificate in certificate chain
>>> 140109698238104:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert
>>> handshake failure:s3_pkt.c:1487:SSL alert number 40
>>> 140109698238104:error:140790E5:SSL routines:ssl23_write:ssl handshake
>>> failure:s23_lib.c:177:
>>>
>>> Y al final me muestra
>>> Verify return code: 19 (self signed certificate in certificate chain)
>>>
>>> Por todo esto estoy viendo que el problema no estaría precisamente en
>>> como estoy usando zeep sino algo que no tengo bien configurado en mi
>>> máquina.
>>>
>>> Si pueden iluminarme en que puedo estar haciendo mal se los agradecere
>>>
>>>
>>> Saludos
>>>
>>>
>>> [1]  http://python-zeep.readthedocs.io
>>>
>>>
>>
>> Al parecer el certificado SSL que está utilizando el servidor es del tipo
>> "auto-firmado" y no se encuentra firmado por una Certificate Authority (CA)
>> de confianza.
>> Ubuntu tiene el paquete "ca-certificates" [0] actualizado con los
>> certificados más comunes.
>>
>> Una forma más complicada (entre comillas) para evitar lidiar con
>> certificados auto-firmados es utilizar certificados provistos por Lets
>> Encrypt [1] o aún más sencillo es
>> utilizar el servicio de Cloudflare que provee certificados de manera
>> gratuita. En httpsiseasy.com hay videos con ejemplos de cómo utilizar
>> Cloudflare y HTTPS.
>>
>> [0] https://launchpad.net/ubuntu/xenial/+source/ca-certificates
>> [1] https://letsencrypt.org/
>>
>>
>
> ​Si, en este caso en particular es un certificado para acceder a un server
> de prueba, supongo que por eso usan este certificado autofirmado.
> El certificado me lo da la gente que administra el servicio, no lo manejo
> yo.
>
> ¿Que puede estar haciendo distinto Windows que, usando la aplicación
> SoapUI [1] bajo Windows si funciona ?
>
> No entiendo si es el cliente (en este caso mi script python) el me esta
> objetando el certificado o es el server que me lo rechaza.
> Como mencione en el primer mail del hilo, usando el cliente de openssl
> tampoco me funciona por lo que descarto que sea python el problema.
> También aclaro que registre copie el .crt a
> /usr/local/share/ca-certificates  y luego actualice el store
> con update-ca-certificates
>
>
> [1] https://www.soapui.org/
>
>
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180718/5c678e5a/attachment-0001.html>


Más información sobre la lista de distribución pyar