root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
curl
ssl
openssl
ssl-certificate
x509certificate
user3812540
quelle
quelle
Antworten:
Bezogen auf 'SSL-Zertifikatsproblem: Fehler des lokalen Ausstellerzertifikats nicht möglich'. Es ist wichtig zu beachten, dass dies für das System gilt, das die CURL-Anforderung sendet, und NICHT für den Server, der die Anforderung empfängt.
Laden Sie die neueste Datei cacert.pem von https://curl.haxx.se/ca/cacert.pem herunter
Fügen Sie die folgende Zeile zu php.ini hinzu: (Wenn dies Shared Hosting ist und Sie keinen Zugriff auf php.ini haben, können Sie dies zu .user.ini in public_html hinzufügen.)
curl.cainfo="/path/to/downloaded/cacert.pem"
Stellen Sie sicher, dass Sie den Pfad in doppelte Anführungszeichen setzen !!!
Standardmäßig analysiert der FastCGI-Prozess alle 300 Sekunden neue Dateien (bei Bedarf können Sie die Häufigkeit ändern, indem Sie einige Dateien hinzufügen, wie hier vorgeschlagen: https://ss88.uk/blog/fast-cgi-and-user-ini- files-the-new-htaccess / ).
quelle
curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Es schlägt fehl, da cURL das vom Server bereitgestellte Zertifikat nicht überprüfen kann.
Es gibt zwei Möglichkeiten, um dies zum Laufen zu bringen:
Verwenden Sie cURL mit der
-k
Option, mit der Curl unsichere Verbindungen herstellen kann. Das heißt, cURL überprüft das Zertifikat nicht.Fügen Sie die Stammzertifizierungsstelle (die Zertifizierungsstelle, die das Serverzertifikat signiert) hinzu
/etc/ssl/certs/ca-certificates.crt
Sie sollten Option 2 verwenden, da diese Option sicherstellt, dass Sie eine Verbindung zum sicheren FTP-Server herstellen.
quelle
Ich habe dieses Problem gelöst, indem ich einen Zeilencode in das cURL-Skript eingefügt habe:
Warnung : Dies macht die Anfrage absolut unsicher (siehe Antwort von @YSU)!
quelle
if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
In meinem Fall stellte sich heraus, dass es ein Problem mit der Installation meines Zertifikats auf dem Dienst war, den ich mit cURL verwenden wollte. Ich konnte die Zwischen- und Stammzertifikate nicht in meinem Domänenzertifikat bündeln / verketten . Es war zunächst nicht offensichtlich, dass dies das Problem war, da Chrome es ausgearbeitet und das Zertifikat akzeptiert hat, obwohl die Zwischen- und Stammzertifikate weggelassen wurden.
Nach dem Bündeln des Zertifikats funktionierte alles wie erwartet. Ich habe so gebündelt
Und für alle Zwischen- und das Stammzertifikat wiederholt.
quelle
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
in Ihrem Bundle haben und den obskuren Fehler erhalten:curl: (77) error setting certificate verify locations
Für mich hat die einfache Installation von Zertifikaten geholfen:
quelle
Hatte dieses Problem nach der Installation von Git Extensions v3.48. Versucht, mysysgit erneut zu installieren, aber das gleiche Problem. Am Ende musste die Git SSL-Überprüfung deaktiviert werden (bitte Sicherheitsaspekte berücksichtigen!) Mit:
Wenn Sie jedoch ein Domänenzertifikat haben, fügen Sie es besser zu (Win7) hinzu.
quelle
--global
, SSL nur für das Repository zu deaktivieren, in dem Sie Probleme haben. Unter groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw finden Sie eine Diskussion zu den aktuell erforderlichen CRT-Dateien.Wir sind kürzlich auf diesen Fehler gestoßen. Es stellte sich heraus, dass das Stammzertifikat nicht ordnungsgemäß im CA-Speicherverzeichnis installiert wurde. Ich habe einen Curl-Befehl verwendet, bei dem ich das CA-Verzeichnis direkt angegeben habe.
curl --cacert /etc/test/server.pem --capath /etc/test ...
Dieser Befehl schlug jedes Mal mit curl fehl: (60) Problem mit dem SSL-Zertifikat: Das lokale Ausstellerzertifikat konnte nicht abgerufen werden.Nach der Verwendung
strace curl ...
wurde festgestellt, dass curl nach der Stammzertifizierungsdatei mit dem Namen 60ff2731.0 suchte, die auf einer OpenSL-Hash-Namenskonvetion basiert. Daher habe ich diesen Befehl gefunden, um das Stammzertifikat effektiv zu importieren:Dadurch wird ein Softlink erstellt
curl las unter dem Deckmantel das server.pem-Zertifikat, bestimmte den Namen der Stammzertifizierungsdatei (rootcert.pem), konvertierte sie in ihren Hash-Namen und führte dann eine Suche nach Betriebssystemdateien durch, konnte sie jedoch nicht finden.
Zum Mitnehmen sollten Sie beim Ausführen von Curl Strace verwenden, wenn der Curl-Fehler unklar ist (was eine enorme Hilfe war), und dann sicherstellen, dass das Stammzertifikat mithilfe der OpenSL-Namenskonvention ordnungsgemäß installiert wird.
quelle
Es ist höchstwahrscheinlich ein fehlendes Zertifikat vom Server.
Root-> Intermediate-> Server
Ein Server sollte mindestens den Server & Intermediate senden.
Verwenden Sie
openssl s_client -showcerts -starttls ftp -crlf -connect abc:21
diese Option, um das Problem zu beheben.Wenn nur ein Zertifikat zurückgegeben wird (entweder selbst signiert oder ausgestellt), müssen Sie Folgendes auswählen:
curl -k
(sehr schlechte Idee)Wenn der Server zurückgegeben wurde, mehrere, jedoch ohne selbstsigniertes (Root-) Zertifikat:
Wenn der Server ein Stammzertifizierungsstellenzertifikat zurückgegeben hat, befindet es sich nicht in Ihrem Zertifizierungsstellenspeicher. Folgende Optionen stehen zur Verfügung:
Ich habe abgelaufene / widerrufene Zertifikate ignoriert, da es keine Meldungen gab, die darauf hinweisen. Aber Sie können die Zertifikate mit untersuchen
openssl x509 -text
Wenn Sie eine Verbindung zu einem Home Edition- FTP-Server ( https://www.cerberusftp.com/support/help/installing-a-certificate/ ) herstellen, werde ich sagen, dass dieser selbst signiert ist.
Bitte posten Sie weitere Details, wie die Ausgabe von openssl.
quelle
Gemäß cURL-Dokumenten können Sie das Zertifikat auch an den folgenden
curl
Befehl übergeben:Beispielsweise:
quelle
Es kann ausreichend sein, nur die Liste der Zertifikate zu aktualisieren
quelle
Versuchen Sie, curl in Ubuntu neu zu installieren und meine CA-Zertifikate zu
sudo update-ca-certificates --fresh
aktualisieren, mit denen die Zertifikate aktualisiert wurdenquelle
Unter Windows hatte ich dieses Problem. Curl wurde von mysysgit installiert, daher wurde mein Problem durch Herunterladen und Installieren der neuesten Version behoben.
Andernfalls sind dies anständige Anweisungen zum Aktualisieren Ihres CA-Zertifikats, die Sie versuchen könnten.
quelle
Ja, Sie müssen auch ein CA-Zertifikat hinzufügen. Hinzufügen eines Code-Snippets in Node.js zur besseren Übersicht.
quelle
Ich bin auch auf dieses Problem gestoßen. Ich habe diesen Thread gelesen und die meisten Antworten sind informativ, aber für mich zu komplex. Ich habe keine Erfahrung mit Networking-Themen, daher ist diese Antwort für Leute wie mich.
In meinem Fall trat dieser Fehler auf, weil ich die Zwischen- und Stammzertifikate nicht neben dem Zertifikat, das ich in meiner Anwendung verwendet habe, angegeben habe.
Folgendes habe ich vom Anbieter des SSL-Zertifikats erhalten:
In der
abc.crt
Datei gab es nur ein Zertifikat:Wenn ich es in diesem Format bereitstellen würde, würde der Browser keine Fehler anzeigen (Firefox), aber ich würde eine
curl: (60) SSL certificate : unable to get local issuer certificate
Fehlermeldung erhalten, wenn ich die Curl-Anfrage mache.Überprüfen Sie Ihre
abc-bunde.crt
Datei, um diesen Fehler zu beheben . Sie werden höchstwahrscheinlich so etwas sehen:Dies sind Ihre Zwischen- und Stammzertifikate. Ein Fehler tritt auf, weil sie in dem SSL-Zertifikat fehlen, das Sie Ihrer Anwendung zur Verfügung stellen.
Kombinieren Sie den Inhalt dieser beiden Dateien in diesem Format, um den Fehler zu beheben:
Beachten Sie, dass zwischen den Zertifikaten am Ende oder am Anfang der Datei keine Leerzeichen stehen. Sobald Sie dieses kombinierte Zertifikat Ihrer Anwendung zur Verfügung gestellt haben, sollte Ihr Problem behoben sein.
quelle
Unter Windows - wenn Sie von cmd laufen
Laden Sie cacert.pem von https://curl.haxx.se/docs/caextract.html herunter
Umgebungsvariable festlegen:
und Umgebung neu laden
Versuchen Sie es jetzt erneut
Grund für das Problem: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548
quelle
Mein Fall war anders. Ich hoste eine Site hinter einer Firewall. Der Fehler wurde von pfSense verursacht.
Dank dieser Antwort habe ich versehentlich die Ursache gefunden .
Alles ist gut, als ich über WAN auf meine Website zugegriffen habe .
Wenn jedoch über das LAN auf die Site zugegriffen wurde (z. B. wenn Wordpress
curl
trotz Verwendung der WAN-IP eine Anfrage an seinen eigenen Server stellte49.x.x.x
), wurde die pfSense-Anmeldeseite bereitgestellt .Ich habe das Zertifikat als identifiziert
pfSense webConfigurator Self-Signed Certificate
. Kein Wunder, dasscurl
ein Fehler aufgetreten ist.Ursache: Es wurde
curl
die WAN-IP-Adresse der Site verwendet49.x.x.x
. Im Kontext des Webservers war die WAN-IP jedoch die Firewall.Debug: Ich habe festgestellt, dass ich das pfSense-Zertifikat erhalten habe.
Lösung: Zeigen Sie auf dem Server, auf dem sich die Site befindet, auf 127.0.0.1
Durch Anwenden der Lösung wurde
curl
die Anfrage vom Webserver ordnungsgemäß verarbeitet und nicht an die Firewall weitergeleitet, die daraufhin die Anmeldeseite gesendet hat.quelle
Dies ist ein Problem mit dem SSH-Zertifikatspeicher. Sie müssen die gültige Zertifikat-PEM-Datei von der CA-Zielwebsite herunterladen und dann die Softlink-Datei erstellen, um ssl das vertrauenswürdige Zertifikat anzuweisen.
openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem
Sie erhalten
dd8e9d41
Erstellen Sie einen Solf-Link mit einer Hash-Nummer und fügen Sie der Datei ein .0 (Punkt-Null) hinzu
dd8e9d41.0
Dann versuchen Sie es erneut.
quelle
Laden Sie https://curl.haxx.se/ca/cacert.pem herunter
Verschieben Sie diese Datei nach dem Download auf Ihren Wamp-Server.
Für exp: D: \ wamp \ bin \ php \
Fügen Sie dann die folgende Zeile zur Datei php.ini unten hinzu.
curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"
quelle
Sie haben vom Server cert ändern ,
cert.pem
umfullchain.pem
ich hatte das gleiche Problem Perl HTTPS Daemon:
Ich habe geändert:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
zu:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'
quelle
Bisher ist dieses Problem in Unternehmensnetzwerken aus zwei Gründen aufgetreten, von denen einer oder beide in Ihrem Fall auftreten können:
Nebenbei bemerkt, Nr. 2 oben kann dazu führen, dass Sie sich unwohl fühlen, wenn Ihr angeblich sicherer TLS-Verkehr gescannt wird. Das ist die Unternehmenswelt für Sie.
quelle
Hatte dieses Problem und es wurde nicht mit neuerer Version gelöst. / etc / certs hatte das Stammzertifikat, der Browser sagte, alles sei in Ordnung. Nach einigen Tests erhielt ich von ssllabs.com die Warnung, dass meine Kette nicht vollständig war (tatsächlich war es die Kette für das alte Zertifikat und nicht das neue). Nach der Korrektur der Zertifizierungskette war alles in Ordnung, auch mit Locken.
quelle
Ich hatte dieses Problem mit Digicert aller Zertifizierungsstellen. Ich habe eine digicertca.pem-Datei erstellt, die sowohl als Zwischen- als auch als Root-Datei in eine Datei eingefügt wurde.
Eorekan hatte die Antwort, brachte aber nur mich und einen anderen dazu, seine Antwort zu stimmen.
quelle
Speziell für
Windows
Benutzer, die einecurl-7.57.0-win64-mingw
ähnliche Version verwenden.Dies ist etwas spät und die vorhandenen Antworten sind korrekt. Aber ich musste immer noch ein bisschen kämpfen, um es auf meinem Windows-Computer zum Laufen zu bringen, obwohl der Prozess eigentlich ziemlich einfach ist. Teilen Sie also den schrittweisen Prozess.
Dieser Fehler bedeutet im Grunde, dass Curl das Zertifikat des Ziel-URI nicht überprüfen kann. Wenn Sie dem Aussteller des Zertifikats (CA) vertrauen, können Sie dies zur Liste der vertrauenswürdigen Zertifikate hinzufügen.
Durchsuchen Sie dazu den URI (z. B. in Chrome) und befolgen Sie die Schritte
.cer
Datei und kopieren Sie den Inhalt (einschließlich ----- BEGIN CERTIFICATE ----- und ----- END CERTIFICATE -----).curl.exe
zC:\SomeFolder\curl-7.57.0-win64-mingw\bin
curl-ca-bundle.crt
Datei mit einem TexteditorJetzt sollte Ihr Befehl in Curl gut ausgeführt werden.
quelle
Dies kann Ihnen beim Verzehr helfen:
getestet an Guzzle / Guzzle 3. *
quelle
Einfache Lösung: IN
~/.sdkman/etc/config
, ändernsdkman_insecure_ssl=true
Schritte:
Nano-
~/.sdkman/etc/config
Änderung
sdkman_insecure_ssl=false
zumsdkman_insecure_ssl=true
Speichern und Beenden
quelle