it-swarm.com.de

Selbstsigniertes Zertifikat mit cURL verwenden?

Ich habe eine flask Anwendung, die mit einem selbstsignierten Zertifikat ausgeführt wird. Ich kann eine Curl-Anfrage senden mit:

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

Die ausführlichen Protokolle zeigen, dass alles in Ordnung war.

Ich wollte die Option -k (--insecure) vermeiden und stattdessen eine PEM-Datei angeben, die curl verwenden könnte. Auf der Curl-Manpage habe ich festgestellt, dass Sie dies mit der Option --cert tun können. Also habe ich eine .pem-Datei erstellt:

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

CURL löst bei Verwendung der Datei private.pem diesen Fehler aus:

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

Irgendwelche Vorschläge? - oder geht das nur mit einem ordnungsgemäß signierten Zertifikat?

Tnx

23
wholly_cow

Dies ist nur eine andere Version dieser Frage: Verwenden von openssl, um das Zertifikat von einem Server abzurufen

Oder offener ausgedrückt:

Die Verwendung von curl --cert ist falsch und gilt für Client-Zertifikate.

Holen Sie sich zuerst die Zertifikate, die Ihr Server verwendet:

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

(-servername ist für SNI erforderlich, damit Sie das Zertifikat des richtigen virtuellen Servers zurückerhalten.)

Lassen Sie dann die Curl-Befehlszeile diesen Satz verwenden, um den Server in nachfolgenden Vorgängen zu überprüfen:

$ curl --cacert cacert.pem https://server/ [and the rest]
48
Daniel Stenberg