2013-05-18 18 views
18

Sto utilizzando arricciatura per scaricare dati da un sito https utilizzando file di certificati pubblici.impossibile impostare il file della chiave privata: './cert.pem' tipo PEM

Informazioni di sistema:

  • OS: Fedora 14
  • ricciolo: ricciolo 7.30.0
  • OpenSSL: OpenSSL 1.0.0a FIPS

Il il comando è,

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 

Ho dato tutti i permessi al file .pem, l'arricciatura continua a generare un errore.

Grazie

risposta

13

Dopo aver letto cURL documentation sulle opzioni che avete usato, sembra che la chiave privata del certificato non è nello stesso file. Se si trova in un file diverso, è necessario menzionarlo utilizzando il file --key e fornire la passphrase.

Quindi, assicurarsi che cert.pem abbia una chiave privata (insieme al certificato) o fornisca l'opzione --key.

Inoltre, questa documentazione indica che Nota che questa opzione presuppone un file "certificato" che è la chiave privata e il certificato privato concatenato!

Come sono concatenati? È abbastanza facile Mettili uno dopo l'altro nello stesso file.

È possibile ottenere ulteriore assistenza su questo here.

Credo che questo potrebbe aiutarti.

+0

Grazie per il vostro prezioso information..Still una cosa che non capisco è come posso recuperare la chiave privata dal certificato pubblico. posso ottenere la chiave pubblica "openssl x509 user1495372

+0

Il certificato della chiave pubblica non contiene la chiave privata. La chiave privata deve essere conservata in modo sicuro dal proprietario. Se non si dispone di una chiave privata, non si è il proprietario del certificato. – doptimusprime

+0

Questo comando darà solo la chiave pubblica. – doptimusprime

0

Non sono sicuro Se questo aiuterà qualcuno, ma stavo ricevendo questo errore (anche se stavo usando php per crearlo invece della riga di comando) e per risolverlo dovevo assicurarmi che nessun vecchio file .key o .pem erano nella directory che stavo guardando. Eliminandoli e creando nuovi file con l'autenticazione ha funzionato perfettamente!

2

Ho affrontato questo problema quando avevo usato Open SSL e la soluzione era quella di dividere il CERT in 3 file e utilizzare tutti loro fare la chiamata con 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 
+0

hmm. sicuro che sul client.pem hai impostato la tua password? – Philip

Problemi correlati