2014-12-22 19 views
10

Ho un'applicazione di una bottiglia in esecuzione utilizzando un certificato autofirmato. Sono in grado di inviare una richiesta di arricciatura utilizzando:Utilizzare un certificato autofirmato con cURL?

curl -v -k -H "Content-Type: application/json" -d '{"data":"value1","key":"value2"}' https://<server_ip>:<port> 

I registri dettagliati mostrano che tutto è andato bene.

Volevo evitare di usare l'opzione -k (--insecure) e specificare invece un file .pem che potrebbe essere usato da curl. Guardando la pagina man di curl ho scoperto che potevi fare ciò usando l'opzione --cert. così ho creato un file .pem utilizza questo:

openssl rsa -in server.key -text > private.pem 

CURL mi butta questo errore quando si utilizza il file private.pem:

curl: (58) unable to use client certificate (no key found or wrong pass phrase?) 

Qualche suggerimento? - o è possibile solo con un certificato debitamente firmato?

Tnx

risposta

21

Questa è solo un'altra versione di questa domanda: Using openssl to get the certificate from a server

O mettere più senza mezzi termini:

utilizzando curl --cert è sbagliato, lo è per i certificati client.

In primo luogo, ottenere i CERT il server utilizza:

$ openssl s_client -showcerts -servername server -connect server:443 > cacert.pem 

(-servername è necessario per SNI in modo da ottenere il certificato del server virtuale a destra indietro)

Poi rendere l'uso della riga di comando ricciolo quell'insieme di verificare il server nelle operazioni successive:

$ curl --cacert cacert.pem https://server/ [and the rest] 
+2

ho provato a fare questo, ma ho ancora lo stesso errore: 'ricciolo: (58) in grado di utilizzare il certificato client (nessuna chiave trovata o frase errata?) '. Ho seguito queste istruzioni per generare i certificati client e server autofirmati: http://dst.lbl.gov/~boverhof/openssl_certs.html. Cos'altro potrei fare di sbagliato? – nmurthy

+0

Questo aggiunge altro output a cacert.pem. È possibile utilizzare invece questa riga di comando:'openssl s_client -showcerts -servername server -connect server: 443 server.pem' – Christian

Problemi correlati