Bei Curl wird der folgende Fehler angezeigt:
Curl: (77) Fehler beim Einstellen des Zertifikats zur Überprüfung der Speicherorte: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: keine
Wie lege ich die Speicherorte für dieses Zertifikat fest? Vielen Dank.
ca-certificates
installiert, aber der Fehler blieb bestehen. Das Problem war, dass sich meine Zertifikate/etc/ssl/certs/ca-certificates.crt
anstelle von befanden/etc/pki/tls/certs/ca-bundle.crt
, sodass ich nur die UmgebungsvariableCURL_CA_BUNDLE
auf den richtigen Pfad setzen musste.export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
.Antworten:
Dieser Fehler hängt mit einem fehlenden Paket zusammen :
ca-certificates
. Es installieren.In Ubuntu Linux (und einer ähnlichen Distribution):
In CygWin über Apt-Cyg
In Arch Linux (Raspberry Pi)
Die Dokumentation sagt:
Wie zu sehen unter: Debian - Details der Paket-Ca-Zertifikate in Squeeze
quelle
pacman -S ca-certificates-utils
. Ich tat.sudo apt install --reinstall ca-certificates
installiert und die Fehler behoben wurden, die ich sahIch hatte auch die neueste Version von ca-Zertifikaten installiert, bekam aber immer noch den Fehler:
Das Problem war, dass Curl erwartete, dass sich das Zertifikat am Pfad befand
/etc/pki/tls/certs/ca-bundle.crt
, es aber nicht finden konnte, weil es sich am Pfad befand/etc/ssl/certs/ca-certificates.crt
.Kopieren meines Zertifikats an das erwartete Ziel durch Ausführen
arbeitete für mich. Sie müssen Ordner für das Ziel erstellen, wenn diese nicht durch Ausführen vorhanden sind
Ändern Sie bei Bedarf den obigen Befehl, damit der Name der
/etc/pki/tls/certs/ca-bundle.crt
Zieldatei mit dem von curl erwarteten Pfad übereinstimmt, dh ersetzen Sie ihn in Ihrer Fehlermeldung durch den Pfad nach "CAfile:".quelle
ln -s
wenn Sie ihn nicht jedes Mal neu kopieren möchten, wenn Sie ihn aktualisieren.rescuetime
App auf Fedora 25.sudo ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crt
löste das Problem. (CURL_CA_BUNDLE
env var hat nicht funktioniert)sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.pem
. Ich habe tatsächlich bekommen,The repository ... does not have a Release file
was durch fehlendes Zertifikat (Could not load certificates from ...
) verursacht wurde.Setzen Sie dies in Ihre
.bashrc
(siehe Kommentar von Robert)
quelle
$CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"
um den.xonshrc
).CURL_CA_BUNDLE=/path/to/bundle.crt curl http://example.com
Erstellen Sie eine Datei
~/.curlrc
mit dem folgenden Inhaltquelle
~/.curlrc
cacert=/etc/openssl/cert.pem
Der schnellste Weg, um den Fehler zu umgehen, besteht darin, die Option -k irgendwo in Ihrer Curl-Anfrage hinzuzufügen. Diese Option "ermöglicht Verbindungen zu SSL-Zitaten ohne Zertifikate." (von curl --help)
Beachten Sie, dass dies bedeuten kann, dass Sie nicht mit dem Endpunkt sprechen, von dem Sie glauben, dass Sie es sind, da dieser ein Zertifikat vorlegt, das nicht von einer Zertifizierungsstelle signiert wurde, der Sie vertrauen.
Beispielsweise:
gab mir die folgende Fehlerantwort:
Ich fügte hinzu -k:
und keine Fehlermeldung. Als Bonus habe ich jetzt apt-cyg installiert. Und Ca-Zertifikate.
quelle
-k
Flag bedeutet, dass Sie die Bestätigung verlieren . Abhängig von Ihren Anforderungen kann dies akzeptabel sein. MITM sind nicht triviale Angriffe, wenn Sie davon ausgehen, dass Ihr Netzwerk und der Server, mit dem Sie kommunizieren, vor Eindringlingen geschützt sind (können Sie diese Annahme treffen?). Das Risiko steigt je nach Art Ihrer Daten (Quellcode und Zertifikate sind riskanter als Bilder). Sie können die Integrität der Daten nach der Übertragung überprüfen (Prüfsummen usw.), aber jetzt verlagern Sie Ihr Vertrauen auf diesen Prüfsummenkanal. Am Ende-k
gibt Ihnen einiges mehr Arbeit.@roens ist richtig. Dies betrifft alle Anaconda- Benutzer mit dem folgenden Fehler
curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
Die Problemumgehung besteht darin, die Standard-Systemlocke zu verwenden und zu vermeiden , dass die vorangestellte Anaconda-
PATH
Variable durcheinander gebracht wird. Du kannst entwederBenennen Sie die Anaconda Curl-Binärdatei um :)
mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
ODER entfernen Sie die Anaconda-Locke
conda remove curl
$ which curl /usr/bin/curl
[0] Anaconda Ubuntu Curl Github Problem https://github.com/conda/conda-recipes/issues/352
quelle
curl
den vollständigen Pfad ersetzt habe/usr/bin/curl
Von
$ man curl
:quelle
Für PHP-Code, der unter XAMPP unter Windows ausgeführt wird, musste ich die php.ini bearbeiten, um Folgendes einzuschließen
und dann in eine Datei https://curl.haxx.se/ca/cacert.pem kopieren und in curl-ca-bundle.crt umbenennen und unter \ xampp path ablegen (curl.capath konnte nicht funktionieren) . Ich fand auch, dass das CAbundle auf der cURL-Site nicht für die Remote-Site ausreichte, zu der ich eine Verbindung herstellte, und verwendete daher eine, die mit einer vorkompilierten Windows-Version von curl 7.47.1 unter http://winampplugins.co.uk aufgeführt ist / curl /
quelle
Ich hatte genau das gleiche Problem. Wie sich herausstellte, war meine
/etc/ssl/certs/ca-certificates.crt
Datei fehlerhaft. Der letzte Eintrag zeigte ungefähr so:Nachdem zuvor eine neue Zeile hinzugefügt
-----END CERTIFICATE-----
wurde, konnte curl die Zertifikatdatei verarbeiten.Es war sehr ärgerlich, das herauszufinden, da mein
update-ca-certificates
Befehl mich nicht warnte.Dies kann ein versionsspezifisches Curl-Problem sein oder auch nicht. Der Vollständigkeit halber ist hier meine Version:
quelle
Das hat bei mir funktioniert
Gehen Sie dann in den Zertifikatsordner unter
Anschließend kopieren Sie die Datei ca-certificates.crt in die Datei
/etc/pki/tls/certs
Wenn kein tls / certs-Ordner vorhanden ist: Erstellen Sie einen und ändern Sie die Berechtigungen mit chmod 777 -R folderNAME
quelle
Eine andere Alternative zur Behebung dieses Problems besteht darin, die Zertifikatsüberprüfung zu deaktivieren:
quelle
curl führt
SSL
standardmäßig eine Zertifikatüberprüfung mit einem "Bundle" von durchCertificate Authority (CA)
öffentlicher Schlüssel (CA-Zertifikate) verwendet wird. Das Standardpaket heißt curl-ca-bundle.crt. Sie können eine alternative Datei mit der Option --cacert angeben.Wenn dieser
HTTPS
Server ein Zertifikat verwendet, das von einer im Bundle vertretenen Zertifizierungsstelle signiert ist, ist die Zertifikatüberprüfung wahrscheinlich aufgrund eines Problems mit dem Zertifikat fehlgeschlagen (es ist möglicherweise abgelaufen oder der Name stimmt möglicherweise nicht mit dem Domänennamen in der URL überein).Wenn Sie die Überprüfung des Zertifikats durch curl deaktivieren möchten, verwenden Sie -k (oder
--insecure
Option ).beispielsweise
quelle
Es scheint, dass Ihre Locke auf eine nicht vorhandene Datei mit CA-Zertifikaten oder ähnlichem verweist.
Die primäre Referenz zu CA-Zertifikaten mit Curl finden Sie unter: https://curl.haxx.se/docs/sslcerts.html
quelle
Erstellen Sie einfach die Ordner, die in Ihrem System fehlen.
und erstellen Sie die Datei mit dem folgenden Befehl:
Kopieren Sie dann das Zertifikat und fügen Sie es in den Zielordner ein, der in Ihrem Fehler angezeigt wird. Meins war "
with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in
". Stellen Sie sicher, dass Sie die Datei an der genauen Stelle einfügen, die im Fehler angegeben ist. Verwenden Sie den folgenden Befehl, um das Einfügen zu kopieren.Fest.
quelle
Überprüfen Sie, was es wert ist
which curl
ist auch die Bedeutung.Ein Benutzer auf einem von mir gepflegten freigegebenen Computer hat diesen Fehler erhalten. Die Ursache war jedoch, dass sie Anaconda ( http://continuum.io ) installiert hatten . Dadurch setzt so Anacondaâs binären Pfad vor dem Standard
$PATH
, und es kommt mit seinem eigenencurl
binären, den Problemen bei der Suche des Standard - Zert hatte , die waren auf diesem Ubuntu - Rechner installiert.quelle
which -a curl
zu überprüfen , ob alles verfügbar ist, und natürlich zu notieren, welches oben steht.Wenn Sie Homebrew unter MacOS oder Linuxbrew unter Linux verwenden, versuchen Sie, das
openssl
undcurl
mit den folgenden Schritten auf dieser Seite neu zu installieren .Möglicherweise müssen Sie eine neue Shell-Sitzung starten, um das Ergebnis mit zu überprüfen
Wenn die folgende Ausgabe in der Ausgabe angezeigt wird, sollte das Problem behoben sein!
Verweise:
quelle
Ich habe das gleiche Problem: Ich erstelle ein alpines Docker-Image. Wenn ich mich auf eine Website meiner Organisation locken möchte, wird dieser Fehler angezeigt. Um das Problem zu lösen, muss ich das CA-Zertifikat meines Unternehmens erhalten und es dann zu den CA-Zertifikaten meines Images hinzufügen.
Holen Sie sich das CA-Zertifikat
Verwenden Sie OpenSSL, um die Zertifikate für die Website abzurufen:
Dies gibt ungefähr Folgendes aus:
Holen Sie sich das letzte Zertifikat (den Inhalt zwischen dem
-----BEGIN CERTIFICATE-----
und dem-----END CERTIFICATE-----
enthaltenen Markups) und speichern Sie es in einer Datei (z. B. mycompanyRootCA.crt).Bauen Sie Ihr Image auf
Wenn Sie dann Ihr Docker-Image aus Alpin erstellen, gehen Sie wie folgt vor:
Ihr Bild wird jetzt richtig funktionieren! \Ö/
quelle
Wenn jemand immer noch Probleme hat, versuchen Sie es, es hat bei mir funktioniert. Löschen Sie die Dateien in Ihrem
/etc/ssl/certs/
Verzeichnis und installieren Sie ca-certificates neu:Hab das gemacht, als ich versucht habe, Linuxbrew zu installieren.
quelle
Finden Sie einfach, dass diese Lösung perfekt für mich funktioniert.
Ich habe diese Lösung von hier aus gefunden
quelle
Der Fehler ist auf beschädigte oder fehlende SSL-Kettenzertifikatsdateien im PKI-Verzeichnis zurückzuführen. Sie müssen sicherstellen, dass die Dateien wie folgt gebündelt sind: In Ihrer Konsole / Ihrem Terminal:
Geben Sie diese Site ein: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates , holen Sie sich Ihr Ca-Zertifikat für SO. Kopieren Sie die URL des Downloads und fügen Sie sie in die URL ein: wget your_url_donwload_ca-ceritificated.rpm jetzt, installieren Sie Ihre RPM:
Starten Sie jetzt Ihren Dienst neu: Mein Beispiel dieser Befehl:
quelle
Führen Sie den folgenden Befehl in git bash aus, der für mich gut funktioniert
quelle
Dies wurde für mich behoben:
quelle
Ich fand dieses Update einfach und sicher. Es geht lediglich darum, den Pfad zweier Werte in der
php.ini
Datei zu ändern . Befolgen Sie die Anweisungen hier: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificatequelle
Im Folgenden werden die Schritte zur Behebung der Probleme beschrieben.
1. Stellen Sie fest, dass die Datei in der Definitions-URL vorhanden ist.
2. Wenn nicht, laden Sie die Datei von der URL herunter. https://curl.haxx.se/ca/cacert.pem
3. Kopieren Sie die Datei und schädigen Sie sie in den definierten Pfad in der Datei php.ini.
4. Starten Sie den Apache-Dienst neu.
quelle
Ich hatte dieses Problem und es stellte sich heraus, dass meine CURL-Version DER-codierte Zertifikate nicht analysieren konnte (und auch die Option --cert-type nicht beachtete). Als ich das Zertifikat in das PEM-Format konvertierte, funktionierte es.
quelle
In meinem Fall
/etc/ssl/certs/ca-certificates.crt
fehlte die Datei. Wie sich herausgestellt hat, habe ich/etc/ssl/certs
beim Erstellen des Docker-Images den Inhalt von aus der Docker-Datei gelöscht . Nach dem Anpassen meiner Shell-Skripte / Bash-Befehle, die im Dockerfile ausgeführt werden, funktioniert curl jetzt perfekt im neuen Container.quelle