Warum erkennt curl ein selbstsigniertes SSL-Zertifikat nicht?

Ich habe die PEM-Datei nach / usr / local / share / ca-certificates / kopiert und update-ca-certificates ausgeführt. Dabei habe ich überprüft, ob das resultierende Zertifikat jetzt in /etc/ssl/certs/ca-certificates.crt enthalten ist die von curl-config --ca ausgedruckte Datei. Ich habe auch überprüft, ob das von openssl s_client -connect example.com:443 gedruckte Zertifikat mit meiner PEM-Datei identisch ist. Und dennoch erhalte ich weiterhin die Meldung "Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatüberprüfung fehlgeschlagen". Dies passiert auch, wenn ich die Option --cacert von curl verwende, wie unter beschriebenhttp://curl.haxx.se/docs/sslcerts.html zu sagen, welches Zertifikat verwendet werden soll.

Es funktioniert, wenn ich die Zertifikatsüberprüfung vollständig mit curl -k deaktiviere, dies jedoch nicht tun möchte, da ich versuche, ein Test-Harness zu schreiben, mit dem das SSL ordnungsgemäß getestet werden soll.

Es funktioniert einwandfrei, wenn ich in lynx auf dieselbe URL zugreife, die sich normalerweise beschwert, wenn SSL-Fehler auftreten. Aber ich kann Lynx nicht nur für dieses Testgeschirr verwenden, es sei denn, ich kann Tornados AsyncHTTPClient dazu bringen, Lynx anstelle von libcurl zu verwenden. Und es macht anscheinend keinen Sinn, dass die Installation des selbstsignierten Zertifikats Lynx zufriedenstellt, aber nicht lockt.

Ich verwende Ubuntu 12.04 LTS in einer Vagrant-basierten VirtualBox. Es hat Curl 7.22.0. Der SSL-Abschluss-Proxy ist nginx / 1.3.13, der auf demselben Computer ausgeführt wird, und der Domänenname wird durch einen Eintrag in / etc / hosts auf 127.0.0.1 verwiesen.

Irgendwelche Hinweise darauf, was das Problem sein könnte? Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage