Je rencontre un problème SSL avec la commande curl
. Je souhaite accéder à une URL à l'aide de mon certificat client SSL et de ma clé privée.
Voici ma commande:
$ 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 clé est protégée par mot de passe, curl
ne me demande pas de saisir le mot de passe, ce qui est très étrange. Même si je passe le mot de passe avec --pass
, Je reçois toujours la même erreur.
Il semble que l'argument --key
n'est pas pris en compte, car si j'ai remplacé par foo.key
, qui n'existe pas sur mon système de fichiers, j'obtiens toujours la même erreur.
Cependant, si vous utilisez:
$ wget --certificate=./certificate.pem --private-key=private.key "https://myurl.com/" --no-check-certificate
Je peux accéder à mon URL.
Avez-vous une idée?
J'ai vécu le même problème et j'ai finalement trouvé une solution, peut-être que cela peut vous aider.
L'échec était dû à la clé privée au format PKCS # 8 :
une clé privée PKCS # 8 commence par -----BEGIN ENCRYPTED PRIVATE KEY-----
entête
ou-----BEGIN PRIVATE KEY-----
entête
Avec cette clé curl
+ openssl
fonctionnera, mais curl
+ nss
+ libnsspem.so
non.
avec une clé privée RSA qui commence par-----BEGIN RSA PRIVATE KEY-----
entête
curl
+ openssl
et curl
+ nss
+ libnsspem.so
marchera.
Alors utilisez cette commande
openssl pkcs8 -in path/to/your/pkcs8/key -out path/to/rsa/key
pour convertir la clé PKCS # 8 en clé RSA traditionnelle.
Si votre certificat a une phrase secrète, vous devez l'ajouter après le nom du certificat:
curl -k -v "https://myurl.com/" --cert ./certificate.pem:passphrase --key ./private.key