2015-08-27 11 views
13

Ich muss mich mit einem Webservice verbinden, wo ein PKCS12 Zertifikat ein Muss ist. Die Idee war, curl in einem Bash-Skript zu verwenden (unter OS X, um genau zu sein).cURL mit einem PKCS # 12 Zertifikat in einem Bash Skript

Ich habe gelernt, dass eines der wenigen Dinge, die curl in der Kommunikation nicht tun kann, die Handhabung von pkcs12-Zertifikaten (.p12) ist. Was sind meine Möglichkeiten?

Ich habe gelesen, dass die Umwandlung des Zertifikats in PEM-Format funktionieren würde (mit openssl), aber ich habe keine Ahnung, wie man Curl sagen, dass es eine PEM erhält und mit einem Webdienst kommunizieren sollte PKCS12-Zertifikate anfordern.

Umwandlung pkcs12 zu pem würde wie folgt (z) durchgeführt werden, ist es für mich gearbeitet, aber ich habe nicht erfolgreich verwendet, um sie mit Curl:

openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes 
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys 

irgendwelche Hinweise? oder irgendwelche Alternativen zu Curl? Die Lösung sollte auf Kommandozeile basieren.

Antwort

28

Ich denke, Sie haben bereits gelöst, aber ich hatte das gleiche Problem. Ich antworte für meine Lösung.

Wenn Sie eine .p12-Datei haben, ist Ihr Ansatz richtig. Zuerst müssen Sie das Zertifikat und den Schlüssel von der p12-Datei getrennt bekommen. Als Beispiel, wenn Sie eine mycert.p12 Datei ausführen

openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes 
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys 

Dann müssen Sie den Anruf zu Ihrer URL machen. Zum Beispiel davon ausgehen, dass Sie die WSDL-Datei eines bestimmten webservice

curl -E ./file.crt.pem --key ./file.key.pem https://myservice.com/service?wsdl 

Wenn die Dateien file.crt.pem erhalten möchten und file.key.pem sind in Ihrem Arbeitsordner „./“ ist obligatorisch.

+3

Für mich hat das funktioniert: curl -k --cert ./file.crt.pem --cert-typ PEM --key ./file.key.pem --key-type PEM --pass "" – Kartins

+4

Lassen Sie die Leute einfach wissen, dass Sie, wenn Sie 'curl -k' wie Kartins im obigen Kommentar verwenden, ** ** https checks deaktivieren. – user2599522

Verwandte Themen