web-dev-qa-db-fra.com

impossible de définir le fichier de clé privée: type PEM './cert.pem'

J'utilise curl pour télécharger des données d'un site https à l'aide de fichiers de certificat publics.

Informations système:

  • OS: Fedora 14
  • curl: curl 7.30.0
  • openssl: OpenSSL 1.0.0a-fips

La commande est,

curl -v "https://<ip:<port>" --cert "./cert.pem" --cacert "./cacert.pem" --cert-type PEM
* About to connect() to kng.com port 443 (#0)
*   Trying 11.19.37.123...
* Adding handle: conn: 0x8189e68
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x8189e68) send_pipe: 1, recv_pipe: 0
* Connected to fkng.com (11.19.37.123) port 443 (#0)
* unable to set private key file: './cert.pem' type PEM
* Closing connection 0
curl: (58) unable to set private key file: './cert.pem' type PEM

J'ai donné toutes les permissions sur le fichier .pem, curl lance toujours une erreur.

22
user1495372

Après avoir lu cURL documentation sur les options que vous avez utilisées, il semble que la clé privée du certificat ne se trouve pas dans le même fichier. S'il se trouve dans un fichier différent, vous devez le mentionner en utilisant --key file et fournir le mot de passe composé.

Assurez-vous donc que cert.pem possède une clé privée (avec le certificat) ou fournissez-la à l'aide de l'option --key.

En outre, cette documentation mentionne que Notez que cette option suppose un fichier "certificat" qui est la clé privée et le certificat privé concaténé!

Comment sont-ils concaténés? C'est assez facile. Placez-les l'un après l'autre dans le même fichier.

Vous pouvez obtenir plus d'aide à ce sujet ici .

Je crois que cela pourrait vous aider.

18
doptimusprime

J'ai rencontré ce problème lorsque j'avais utilisé Open SSL et la solution consistait à diviser le certificat en 3 fichiers et à les utiliser tous pour effectuer l'appel avec Curl: 

openssl pkcs12 -in mycert.p12 -out ca.pem -cacerts -nokeys
openssl pkcs12 -in mycert.p12 -out client.pem -clcerts -nokeys 
openssl pkcs12 -in mycert.p12 -out key.pem -nocerts

curl --insecure --key key.pem --cacert ca.pem --cert client.pem:KeyChoosenByMeWhenIrunOpenSSL https://thesite
8
Petter Ivarsson

Je ne suis pas sûr que cela puisse aider quelqu'un mais que j'obtienne cette erreur (bien que j'utilisais php pour le créer à la place de la ligne de commande) et pour le corriger, je devais m'assurer qu'aucun ancien fichier .key ou .pem n'était dans le répertoire Je regardais. En les supprimant et en créant de nouveaux fichiers avec l'authentification, cela fonctionnait parfaitement!

0
user8066845