[pyar] Acceder a web service SOAP con SSL

Maxi maxirobaina en gmail.com
Mie Jul 18 13:00:10 -03 2018


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/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180718/adc15b1e/attachment-0001.html>


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