Solicitudes de Python: error de SSL para el certificado del lado del cliente

Estoy llamando a una API REST con solicitudes en python y hasta ahora he tenido éxito cuando configuro verify=False .

Ahora, tengo que usar el certificado del lado del cliente que necesito importar para la autenticación y recibo este error cada vez que estoy usando el cert (.pfx). cert.pfx cert (.pfx). cert.pfx está protegido por contraseña.

 r = requests.post(url, params=payload, headers=headers, data=payload, verify='cert.pfx') 

Este es el error que estoy recibiendo:

 Traceback (most recent call last): File "C:\Users\me\Desktop\test.py", line 65, in  r = requests.post(url, params=payload, headers=headers, data=payload, verify=cafile) File "C:\Python33\lib\site-packages\requests\api.py", line 88, in post return request('post', url, data=data, **kwargs) File "C:\Python33\lib\site-packages\requests\api.py", line 44, in request return session.request(method=method, url=url, **kwargs) File "C:\Python33\lib\site-packages\requests\sessions.py", line 346, in request resp = self.send(prep, **send_kwargs) File "C:\Python33\lib\site-packages\requests\sessions.py", line 449, in send r = adapter.send(request, **kwargs) File "C:\Python33\lib\site-packages\requests\adapters.py", line 322, in send raise SSLError(e) requests.exceptions.SSLError: unknown error (_ssl.c:2158) 

También he intentado openssl para obtener .pem y key pero con .pem y obtener SSL: CERTIFICATE_VERIFY_FAILED

¿Alguien puede indicarme cómo importar los certificados y dónde colocarlos? Intenté buscar pero todavía me enfrenté con el mismo problema.

Yo tuve el mísmo problema. El parámetro de verify parece referirse al certificado del servidor. Desea que el parámetro cert especifique su certificado de cliente.

Tuve que usar OpenSSL para convertir para obtener un archivo PEM certificado y un archivo PEM clave.

 import requests cert_file_path = "cert.pem" key_file_path = "key.pem" url = "https://example.com/resource" params = {"param_1": "value_1", "param_2": "value_2"} cert = (cert_file_path, key_file_path) r = requests.get(url, params=params, cert=cert, verify=False) 

Todavía tuve problemas con las solicitudes que no funcionaban bien con algunos servidores SSL, pero creo que la distinción de verify / cert podría ser su problema.