insecure - curl:(58) No se puede cargar la clave del cliente-8178
php curl insecure ssl (2)
Estoy enfrentando un problema de SSL con el comando curl
. Quiero llegar a una URL usando mi certificado de cliente SSL y clave privada.
Este es mi comando:
$ curl -k -v "https://myurl.com/" --cert ./certificate.pem --key ./private.key
* About to connect() to xx.xx.xx.xx port 23444 (#0)
* Trying xx.xx.xx.xx... connected
* Connected to xx.xx.xx.xx (xx.xx.xx.xx) port 23444 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* Unable to load client key -8178.
* NSS error -8178
* Closing connection #0
curl: (58) Unable to load client key -8178.
La clave está protegida por contraseña, curl
no me pide que ingrese la contraseña, lo cual es muy extraño. Incluso si paso la contraseña con --pass
, sigo recibiendo el mismo error.
Parece que el argumento --key
no se considera, porque si reemplazo con foo.key
, que no existe en mi sistema de archivos, sigo recibiendo el mismo error.
Sin embargo, si uso:
$ wget --certificate=./certificate.pem --private-key=private.key "https://myurl.com/" --no-check-certificate
Puedo llegar a mi URL
¿Tiene alguna idea?
He pasado por el mismo problema, y ​​finalmente encontré una solución, tal vez pueda ayudarte.
La falla se debió a la clave privada en formato PKCS # 8 :
una clave privada PKCS # 8 comienza con
-----BEGIN ENCRYPTED PRIVATE KEY-----
encabezado
o
-----BEGIN PRIVATE KEY-----
headerCon esta tecla
curl
+openssl
funcionará, perocurl
+nss
+libnsspem.so
no funcionaría.con una clave privada RSA que comienza con
-----BEGIN RSA PRIVATE KEY-----
headertanto
curl
+openssl
comocurl
+nss
+libnsspem.so
funcionarán.
Entonces usa este comando
openssl pkcs8 -in path/to/your/pkcs8/key -out path/to/rsa/key
para convertir la clave PKCS # 8 a la clave RSA tradicional.
Si su certificado tiene una frase de contraseña, debe agregarla después del nombre del certificado:
curl -k -v "https://myurl.com/" --cert ./certificate.pem:passphrase --key ./private.key