que insecure cacert curl ssl client-server

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----- header

    Con esta tecla curl + openssl funcionará, pero curl + nss + libnsspem.so no funcionaría.

  • con una clave privada RSA que comienza con
    -----BEGIN RSA PRIVATE KEY----- header

    tanto curl + openssl como curl + 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