[Py-ES] Uso de certificado FNMT con Python requests
Juan Luis Cano
juanlu001 at gmail.com
Sat Jun 7 14:17:13 CEST 2014
Hola a todos, a ver si alguien me puede echar una mano con mi consulta.
Probablemente tiene más que ver con OpenSSL que con Python pero como es
una cosa particular española tal vez alguien en la lista tenga experiencia.
Tengo un certificado digital expedido por la FNMT. Lo uso en Firefox sin
problemas, quiero usarlo desde un script Python con requests.
Estoy probando a meterme en esta página:
https://w2.seg-social.es/ProsaInternet/OnlineAccess?ARQ.SPM.ACTION=LOGIN&ARQ.SPM.APPTYPE=SERVICE&ARQ.IDAPP=XV20R100&URL=239&LANG=1&ESTILO=1
(Si la abrís en el navegador debería pedir un certificado).
Pues bien, lo que he hecho ha sido exportar el certificado en formato
.p12 desde Firefox. Con esta línea en requests:
>>> requests.get(URL, cert="ruta/completa/cert.p12")
SSLError: [SSL] PEM lib (_ssl.c:2511)
Lo cual me hace sospechar que debería convertirlo a formato .pem. Pruebo
esto primero:
$ openssl pkcs12 -in cert.p12 -out cert.pem
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Todo correcto (creo). Si ahora hago esto:
>>> requests.get(URL, cert="ruta/completa/cert.pem")
Enter PEM pass phrase:
ConnectionError: HTTPSConnectionPool(host='w2.seg-social.es', port=443):
Max retries exceeded with url:
/ProsaInternet/OnlineAccess?ARQ.SPM.ACTION=LOGIN&ARQ.SPM.APPTYPE=SERVICE&ARQ.IDAPP=XV20R100&URL=239&LANG=1
(Caused by <class 'OSError'>: [Errno 22] Invalid argument)
¿Quiere esto decir que estoy haciendo mal o que me he pasado de intentos
por hoy? :)
He intentado también convertirlos en un par crt/key:
$ openssl pkcs12 -in CERTIFICADO.p12 -nocerts -out cert.key
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
$ openssl pkcs12 -in CERTIFICADO.p12 -clcerts -nokeys -out cert.crt
Enter Import Password:
MAC verified OK
>>> requests.get(URL, cert=("/ruta/completa/cert.crt",
"/ruta/completa/cert.key"))
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
(_ssl.c:598)
Me he asegurado que no me equivoco con la pass phrase. ¿Me estoy
equivocando en algo?
Si me apuntáis a algún sitio donde pueda encontrar cómo hacer esto se
agradece también - y si pensáis que debo preguntar en StackOverflow
decidlo también :)
Gracias de antemano, un saludo
Juanlu
More information about the general
mailing list