2015-04-22 13 views
5

Sto tentando di effettuare chiamate di prova a un'API di terze parti che richiede un certificato cliente. Ho generato un nuovo cert utilizzare questo comando con OpenSSL:Ottenere (58) impossibile utilizzare il certificato client (nessuna chiave trovata o frase errata?) Da arricciatura

req -new -newkey rsa:2048 -nodes -out mycsr.csr -keyout mykey.key 

Ho quindi inviato loro la RSI, e mi hanno mandato indietro mycert.crt. I concatenati il ​​CERT e la chiave insieme:

cat mycert.crt mykey.key > mycertandkey.pem 

Infine, mycert.crt aggiunto alla cartella di ca-certificates e ca-certificates.conf e corse "update-ca-certificates --fresh".

Ora, io sto cercando di fare la chiamata ricciolo dalla bash utilizzando il seguente comando:

curl -X GET --cert mycertandkey.pem -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 

Ho anche provato:

curl -X GET --cert mycertandkey.pem --cacert mycert.crt -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 

e:

curl -X GET --cert mycertandkey.pem --cacert mycert.crt --key mykey.key -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 

E ogni altra combinazione che riesco a pensare. Ricevo sempre l'errore "arricciatura: (58) impossibile utilizzare il certificato client (nessuna chiave trovata o frase errata?)". La chiave non ha una passphrase. Tutti i file cert/key hanno 777 permessi.

Non ho lavorato molto con i certs in passato e mi sento come se mi mancasse qualcosa, soprattutto perché mi sembra di avere un solo certificato. Il certificato è che l'altra società mi ha inviato un cacert o è il mio cliente cert? Ho concatenato la chiave privata con il certificato sbagliato?

Ho trovato molte informazioni frammentarie su questo online, ma se qualcuno conosce un buon tutorial su questo argomento, lo apprezzerei molto.

risposta

4

L'aggiunta di una passphrase alla mia chiave privata ha risolto il mio problema.

ho usato il seguente comando per aggiungere la passphrase:

ssh-keygen -p -f mykey.key 

Prima ho potuto eseguire quel comando con successo, avevo bisogno di cambiare i permessi sul file di chiave. 777 non è abbastanza restrittivo e ssh-keygen non lo toccherà. Cambiando le autorizzazioni su 600 risolto.

chmod 600 mykey.key 

Dopo aver aggiunto la frase, ho ricreato il file .pem. Ora posso fare con successo le chiamate di arricciatura usando questo comando:

curl -X GET --cert mycertandkey.pem:mypassphrase -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com