Wie behebe ich CA-Zertifizierungsprobleme mit Curl in Ubuntu 14.04?

13

Ich benutze Ubuntu 14.04. Wenn ich locke, erhalte ich die folgende Fehlermeldung:

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

Nach dem, was ich beim googeln erfahre, ist der gesuchte CA-Speicherort für Ubuntu nicht korrekt (und auf meinem Computer nicht vorhanden), sondern /etc/ssl/certs/ca-certificates.crtder richtige Speicherort.

Die meisten Lösungen umfassten das Festlegen der Umgebungsvariablen CURL_CA_BUNDLEam richtigen Speicherort oder das Hinzufügen cacert=/etc/ssl/certs/ca-certificates.crtzur (neu erstellten) .curlrcDatei in meinem Ausgangsverzeichnis. Ich habe beides ausprobiert und beides nicht vollständig gelöst. curl findet diesen Ort, aber es funktioniert immer noch 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 $ sudo update-ca-certificates --fresh aktualisieren, mit denen die Zertifikate aktualisiert wurden, aber immer noch nicht dazu geführt, dass der Fehler 60 behoben wurde.

Ich kenne mich mit CA-Zertifikaten nicht so gut aus und bezweifle, dass ich in der Vergangenheit absichtlich ein selbstsigniertes 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ß jemand überhaupt, wie ich herausfinde, wo sich dieses selbstsignierte Zertifikat befindet, und wie ich es dann entferne?

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

dasanin den Wäldern
quelle

Antworten:

10

Nachdem ich in den letzten Tagen darüber recherchiert und gearbeitet hatte, konnte ich es zum Laufen bringen, und die Antwort war ziemlich einfach.

Ich musste capath=/etc/ssl/certs/in meine setzen.curlrc Datei .

Das hat Curl auf der Kommandozeile zum Locken gebracht. Damit Curl in R (wo ich das erste Mal auf das Problem gestoßen bin) funktioniert, musste ich es auch cacert=/etc/ssl/certs/ca-certificates.crtin meinem haben.curlrc wie zuvor versucht Datei haben, ansonsten suchte es weiter/etc/pki/tls/certs/ca-bundle.crt

Ich habe immer noch keine Ahnung, warum der Fehler bei selbstsignierten Zertifikaten aufgetreten ist.

Aufgrund einiger anderer zufälliger Ergebnisse habe ich auch ein Zertifikat von der Curl-Website heruntergeladen:

sudo wget http://curl.haxx.se/ca/cacert.pem

in dasselbe certsVerzeichnis. Darauf cafilehingewiesen zu haben, hat auch funktioniert. Am Ende habe ich es zurückgesetztca-certificates.crt und es funktioniert immer noch.

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

dasanin den Wäldern
quelle
8

cafile key funktioniert bei mir nicht (curl 7.45.0) aber cacert (from --cacert option). Meine .curlrc- Datei:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
Herzog
quelle
1
das hat bei mir auf Ubuntu 16.04 geklappt!
Joost Döbken
0

Wir hatten das gleiche Problem mit einem unserer C ++ - Programme in Ubuntu 14.04.5. Die .curlrc Methode zeigte keine Wirkung.

Dies wurde behoben, indem die Datei ca-certificates.crt nach /etc/ssl/certs/ca-certificates.crt heruntergeladen und unter / etc / pki / tls / certs / ein symbolischer Link ca-bundle.crt erstellt wurde .

Hoffe das hilft!

Tamil
quelle
0

Nachdem ich ein paar Mal recherchiert hatte, brachte ich es zum Laufen und die Antwort war ziemlich einfach. Mach es schrittweise

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

Schritt 3 lädt die PEM-Datei im Certs- Ordner herunter

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc ist eine versteckte Datei. Überprüfen Sie mit Strg + H im Home-Verzeichnis. wenn nicht da dann am terminal typ

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

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

PyDevSRS
quelle