
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.crt
sondern der richtige Speicherort.
Die meisten Lösungen bestanden darin, die Umgebungsvariable CURL_CA_BUNDLE
auf den richtigen Speicherort zu setzen oder cacert=/etc/ssl/certs/ca-certificates.crt
die (neu erstellte) .curlrc
Datei 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 --fresh
die 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 .curlrc
Datei 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.crt
in meiner .curlrc
Datei 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 certs
Verzeichnis. cafile
Darauf zu zeigen, hat auch funktioniert. Am Ende habe ich es wieder dorthin verschoben ca-certificates.crt
und 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 .curlrc
Methode zeigte keinen Effekt.
Dies wurde gelöst, indem das Verzeichnis heruntergeladen ca-certificates.crt
und /etc/ssl/certs/ca-certificates.crt
ein symbolischer Link erstellt ca-bundle.crt
wurde /etc/pki/tls/certs/
.
Hoffe das hilft!