[pyar] Acceder a web service SOAP con SSL

Maxi maxirobaina en gmail.com
Mie Jul 18 17:46:47 -03 2018


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

> Hola Maxi, si el sitio requiere un certificado de cliente entonces agrega
> luego del session.verify:
>
> session.cert = ('path/al/crt', '/path/private_key')
>

​No me funcionó. Hice lo siguiente


>>> from requests import Session
>>> from zeep.transports import Transport
>>> from zeep import Client
>>>
>>> session = Session()
>>>
>>> session.verify = '/home/maxi/temp/certificado.crt'
>>> session.cert = ('/home/maxi/temp/AR-E_1_1.crt',
'/home/maxi/temp/AR-E_1_1.key')
>>> transport = Transport(session=session)
>>>
>>> client = Client('https://webservicesoap:4443/TEST/Parametros?wsdl',
transport=transport)

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
(_ssl.c:833)

Donde
 session.verify = '/home/maxi/temp/certificado.crt'   Es el certificado que
exporte del navegador

 session.cert = ('/home/maxi/temp/AR-E_1_1.crt',
'/home/maxi/temp/AR-E_1_1.key')   Es el certificado que originalmente es
.pfx y lo separe en dos con openssl

Ahora con
 session.verify = False
 session.cert = ('/home/maxi/temp/AR-E_1_1.crt',
'/home/maxi/temp/AR-E_1_1.key')

Caused by SSLError(SSLError(1, '[SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert
unknown ca (_ssl.c:833)')






>
> Slds
>
>
> On Wed, Jul 18, 2018 at 4:11 PM Maxi <maxirobaina en gmail.com> wrote:
>
>> Hola David,
>>
>> El mié., 18 jul. 2018 a las 14:12, David Arch (<daviddanielarch en gmail.com>)
>> escribió:
>>
>>> 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.
>>>
>>
>>
>> ​Creo que por acá viene la mano. En tantas pruebas que hice omiti contar
>> algo importante.
>> En principio me dieron un certificado (.pfx​) y una contraseña. Ese
>> certificado es el que cargue en el navegador (en mi caso en el
>> administrador de certificados de Firefox). Cuando lo importe me pidió la
>> contraseña de cifrado.
>> Luego, cuando quiero acceder a la url del webseervice desde el navegador
>> me aparece un form "Solicitud de identificación de usuario" pidiendo que
>> seleccione el certificado a usar para identificarme. Luego si me dice que
>> la conexión no es segura y agrego la excepción.
>>
>> Entonces supongo que lo que me esta faltando es indicarle a mi conexión
>> desde python todo esto que es en lo que estoy fallando.
>>
>>
>>
>>> Si pones el código que estas usando además de los errores va ser más
>>> fácil diagnosticar el problema.
>>>
>>>
>> ​El código no es mucho más de lo que esta en la doc de zeep
>>
>> >>> from requests import Session
>> >>> from zeep.transports import Transport
>> >>> from zeep import Client
>> >>>
>> >>>
>> >>> session = Session()
>> >>> session.verify = '/home/maxi/temp/micertificado.crt'
>> >>>
>> >>> transport = Transport(session=session)
>> >>>
>> >>> client = Client('https://webservicesoap?wsdl', transport=transport)​
>>
>> ​Donde session.verify = '/home/maxi/temp/micertificado.crt'   es el
>> archivo que exporte desde el navegador.​
>>
>>
>> ​Saludos​
>> _______________________________________________
>> 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/411e78ed/attachment-0001.html>


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