[pyar] Acceder a web service SOAP con SSL

Maxi maxirobaina en gmail.com
Mie Jul 18 15:53:08 -03 2018


Hola Leandro,

El mié., 18 jul. 2018 a las 13:59, Leandro Minatel (<leandro en minatel.com.ar>)
escribió:

> Hola Maxi,
>
> hace un par de dias tuve que lidiar con el mismo tema pero con otra
> herramienta de desarrollo. Me gusta mucho python pero no le puedo dedicar
> el tiempo que quisiera. En resumen, todavia no alcanzo el escalon de novato
> pero me interesa investigar algunos temas.
>
> En tu caso particular, con certificados de servidor autofirmados, vas a
> necesitar el certificado raiz.Lo podes obtener con Firefox: Vas al sitio y
> cuando tengas la pagina de "La conexion no es segura" haces clic en
> "Avanzadas" y luego en "Agregar excepcion". En la ventana que te aparece
> haces clic en el boton "Ver" y luego solapa "Detalles". Boton "Exportar..."
> y lo guardas como tipo "Certificado con cadena X.509 (PEM) (*.crt;*.pem)"
>
> Una vez que tengas el .crt (PEM), pones algo asi:
>
> session = Session()
> session.verify = ' ruta/al/archivo/descargado/desde/ff.crt'
> transport = Transport(session=session)
> client = Client('https://servidor_de_prueba/webservice?wsdl',
> transport=transport)
>
> Contame como fue.
>

​Si, básicamente eso fue lo primero que probé. Lo volví a probar ahora pero
tengo el mismo error.

(Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed (_ssl.c:833)'),))​

​Creo que tiene que ver algo de lo que menciona David en otro mensaje.

Saludos



>
> Slds
>
>
> On Wed, Jul 18, 2018 at 1:01 PM Maxi <maxirobaina en gmail.com> wrote:
>
>> 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
>
> _______________________________________________
> 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



-- 
Maximiliano Robaina
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180718/fa1989a8/attachment.html>


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