Wie behebt man CA-Zertifikatsprobleme mit Curl in Ubuntu 14.04?

Wie behebt man CA-Zertifikatsprobleme mit Curl in Ubuntu 14.04?

Ich verwende Ubuntu 14.04. Wenn ich curl verwende, erhalte ich die folgende Fehlermeldung:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

Soweit ich es durch Googeln herausgefunden habe, ist der gesuchte CA-Dateispeicherort für Ubuntu nicht korrekt (und existiert auf meinem Computer nicht), /etc/ssl/certs/ca-certificates.crtsondern der richtige Speicherort.

Die meisten Lösungen bestanden darin, die Umgebungsvariable CURL_CA_BUNDLEauf den richtigen Speicherort zu setzen oder cacert=/etc/ssl/certs/ca-certificates.crtdie (neu erstellte) .curlrcDatei in meinem Home-Verzeichnis zu ergänzen. Ich habe beides versucht, und keines davon löst das Problem vollständig. curl findet diesen Speicherort, aber es funktioniert trotzdem nicht und gibt den Fehler aus:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

Ich habe auch versucht, Curl in Ubuntu zu deinstallieren und neu zu installieren und meine CA-Zertifikate zu aktualisieren, wodurch $ sudo update-ca-certificates --freshdie Zertifikate aktualisiert wurden, aber Fehler 60 ist dadurch immer noch nicht verschwunden.

Ich kenne mich mit CA-Zertifikaten nicht so gut aus und bezweifle, dass ich in der Vergangenheit absichtlich ein selbst signiertes Zertifikat hinzugefügt habe. Vielleicht aus Versehen, ich weiß es nicht.

Weiß jemand, wie man das behebt? Gibt es eine Möglichkeit, mit all meinen Zertifikaten neu anzufangen? Oder weiß überhaupt jemand, wie ich herausfinde, wo dieses selbstsignierte Zertifikat ist, und wie ich es dann entfernen kann?

PS: Ich möchte das Flag -k (auch bekannt als --insecure) nicht verwenden. Ich möchte, dass dies sicher funktioniert.

Antwort1

Nachdem ich die letzten paar Tage recherchiert und daran gearbeitet hatte, habe ich es zum Laufen gebracht und die Antwort war letzten Endes ziemlich einfach.

capath=/etc/ssl/certs/Ich musste es in meiner .curlrcDatei festlegen .

Damit funktionierte curl auf der Kommandozeile. Um curl auch in R zum Laufen zu bringen (wo ich das Problem zum ersten Mal hatte), musste ich cacert=/etc/ssl/certs/ca-certificates.crtin meiner .curlrcDatei auch Folgendes haben, wie zuvor versucht, sonst suchte es weiter nach/etc/pki/tls/certs/ca-bundle.crt

Ich weiß immer noch nicht, warum der Fehler bezüglich der selbstsignierten Zertifikate angezeigt wurde.

Aufgrund einiger anderer zufälliger Funde habe ich außerdem ein Zertifikat von der Curl-Website heruntergeladen mit:

sudo wget https://curl.se/ca/cacert.pem

in dasselbe certsVerzeichnis. cafileDarauf zu zeigen, hat auch funktioniert. Am Ende habe ich es wieder dorthin verschoben ca-certificates.crtund es funktioniert immer noch.

Ich verstehe nicht genau, warum das funktioniert hat oder was los ist, aber es ist gelöst.

Antwort2

kafileSchlüssel funktioniert bei mir nicht (curl 7.45.0), aber cacert (von der Option --cacert) funktioniert. Mein.curlrcDatei:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

Antwort3

Nach mehrmaligem Suchen hat es funktioniert und die Antwort war letzten Endes ziemlich einfach.

Öffnen Sie Terminal ctrl+ alt+ tund ändern Sie das Arbeitsverzeichnis:

 cd /etc/ssl/certs/

Laden Sie die PEM-Datei imZertifikateOrdner

 sudo wget https://curl.se/ca/cacert.pem 

Öffnen Sie nun die Datei.curlrc

nano ~/.curlrc 

Fügen Sie die folgenden Zeilen in die geöffnete Datei ein

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

Speichern Sie jetzt die Datei und erledigen Sie Ihre Aufgaben mit dem Curl-Befehl.

AchtungHier habe ich den Nano-Editor verwendet, aber Sie können jeden beliebigen Editor verwenden.

Antwort4

Wir hatten dasselbe Problem mit einem unserer C++-Programme in Ubuntu 14.04.5. Die .curlrcMethode zeigte keinen Effekt.

Dies wurde gelöst, indem das Verzeichnis heruntergeladen ca-certificates.crtund /etc/ssl/certs/ca-certificates.crtein symbolischer Link erstellt ca-bundle.crtwurde /etc/pki/tls/certs/.

Hoffe das hilft!

verwandte Informationen