[pyar] Acceder a web service SOAP con SSL

Leandro Minatel leandro en minatel.com.ar
Mie Jul 18 17:04:11 -03 2018


Hola Maxi, si el sitio requiere un certificado de cliente entonces agrega
luego del session.verify:

session.cert = ('path/al/crt', '/path/private_key')

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


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