Mostrando entradas con la etiqueta curl wget 58 unable client cert 8018 pem certificado. Mostrar todas las entradas
Mostrando entradas con la etiqueta curl wget 58 unable client cert 8018 pem certificado. Mostrar todas las entradas

viernes, 13 de noviembre de 2015

Comando WGET funciona y CURL NO :`(

Hace poco tuve que obtener el descriptor de un webservice (wsdl) con autentificación por certificado, pero lo raro es que con wget funcionaba y con curl no!!!!!!!!!!!!! porque!!!!!!!!
Esto era porque el formato de la clave privada del certificado (.PEM) tenia el encabezado
-----BEGIN ENCRYPTED PRIVATE KEY-----

Y al parecer curl no entendía este encabezado y por eso siempre obtenía el error:

curl: (58) Unable to load client cert -8018.

Bueno ademas si no das correctamente la ubicación del certificado puede darte el error:

curl: (35) NSS: client certificate not found: certificado.pem

No basta cambiarle el encabezado directo a mano, hay que generar correctamente la llave primaria, para eso ejecutamos:

openssl rsa -in certificado.pem -out private.key
Enter pass phrase for localhost.wget.pem:

Luego pide la frase mágica, que debemos introducir y se genera el fichero private.key con el encabezado:
-----BEGIN RSA PRIVATE KEY-----
.
.
-----END RSA PRIVATE KEY-----

Esta llave la remplazamos en el fichero certificado.pem y ejecutamos:

curl -k --cert ./certificado.curl.pem https://host:1000/webService?wsdl

Ahora ya no pide la "palabra magica" y obtiene el descriptor del servicio. tomar en cuenta que certificado.curl.pem es el fichero de certificado PEM y "./" es para que lo obtenga de la ubicación actual.