680 Stimmen

Nicht in der Lage, "unable to get local issuer certificate" mit git unter Windows und einem selbstsignierten Zertifikat zu lösen

Ich benutze Git unter Windows. Ich habe das msysGit-Paket installiert. Mein Test-Repository hat ein selbst signiertes Zertifikat auf dem Server. Ich kann auf das Repository über HTTP zugreifen und es verwenden, ohne Probleme zu haben. Beim Wechsel zu HTTPS tritt der Fehler auf:

SSL-Zertifikatsproblem: Es konnte kein lokales Aussteller-Zertifikat erhalten werden.

Ich habe das selbst signierte Zertifikat im Vertrauenswürdige Stammzertifizierungsstellen meines Windows 7-Client-Rechners installiert. Ich kann ohne Fehlermeldungen zur HTTPS-Repository-URL im Internet Explorer navigieren.

Dieser Blog-Beitrag von Philip Kelley erklärte, dass cURL den Zertifikatspeicher des Client-Rechners nicht verwendet. Ich habe den Ratschlägen des Blog-Beitrags befolgt, um eine private Kopie von curl-ca-bundle.crt zu erstellen und Git so zu konfigurieren, dass es diese verwendet. Ich bin sicher, dass Git meine Kopie verwendet. Wenn ich die Kopie umbenenne, beschwert sich Git, dass die Datei fehlt.

Ich habe mein Zertifikat, wie im Blog-Beitrag erwähnt, eingefügt, bekomme aber immer noch die Meldung "Es konnte kein lokales Aussteller-Zertifikat erhalten werden".

Ich habe überprüft, dass Git immer noch funktioniert, indem ich ein GitHub-Repository über HTTPS klonen.

Das einzige, was ich sehe, das sich von dem Blog-Beitrag unterscheidet, ist, dass mein Zertifikat tatsächlich das Stammzertifikat ist - es gibt keine Kette, um es zu erreichen. Mein Zertifikat stammt ursprünglich vom Klicken auf den IIS8 IIS-Manager-Link 'Selbstsigniertes Zertifikat erstellen'. Vielleicht macht das ein Zertifikat auf irgendeine Weise anders als das, was cURL erwartet.

Wie kann ich Git/cURL dazu bringen, das selbst signierte Zertifikat zu akzeptieren?

2voto

Alhassan Moro Punkte 75

Git config --global http.sslVerify false

2voto

Sérgio Punkte 6518

Um den spezifischen Fehler zu beheben SSL-Zertifikatsproblem: kann lokales Ausstellerzertifikat nicht erhalten in Git

Ich hatte das gleiche Problem mit Let's Encrypt Zertifikaten .

Eine Webseite mit https benötigt einfach:

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

aber git pull sagt:

fatal: unable to access 'https://example.com/git/demo.git/': SSL-Zertifikatsproblem: kann lokales Ausstellerzertifikat nicht erhalten

Um es zu beheben, müssen wir auch hinzufügen:

SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

2voto

CoolMind Punkte 21914

Laden Sie das lokale Zertifikat herunter und installieren Sie es. Wahrscheinlich wird es auf der Website Ihres Unternehmens veröffentlicht. Zum Beispiel, *.cer Datei.

  1. Klicken Sie mit der rechten Maustaste darauf und wählen Sie Zertifikat installieren. Der 'Zertifikat-Import-Assistent' wird angezeigt. Wählen Sie Lokale Maschine. Drücken Sie Weiter, bestätigen Sie.

  2. Wählen Sie Alle Zertifikate in folgendem Speicher platzieren, drücken Sie Durchsuchen und wählen Sie Vertrauenswürdige Stammzertifizierungsstellen, OK, Fertigstellen.

Bildbeschreibung hier eingeben

Sie können auch überprüfen, ob andere Anwendungen Daten abrufen, ziehen oder senden können. Zum Beispiel, in Android Studio oder vielleicht IDEA sollten Sie in den Einstellungen dieses Kontrollkästchen auswählen: Verwenden Sie Hilfsbereich für Anmeldeinformationen.

1voto

Brian Ocampo Punkte 1385

Ich hatte das gleiche Problem mit Azure DevOps (Visual Studio). Schließlich habe ich mich entschieden, mein Repo mit dem SSH-Protokoll zu klonen, weil ich es bevorzuge, anstatt die SSL-Überprüfung zu deaktivieren.

Sie müssen nur einen SSH-Schlüssel generieren, das können Sie so machen... SSH-Dokumentation

ssh-keygen

Und dann importieren Sie Ihren öffentlichen Schlüssel auf Ihrem Git-Host (wie Azure Devops, Github, Bitbucket, Gitlab, usw.)

1voto

Ich hatte diesen Fehler, als ich Visual Studio benutzte. Dies tritt auf, wenn die Einstellungen des kryptografischen Netzwerkanbieters in der Visual Studio-Optionsfenster auf OpenSSL eingestellt sind. Als ich die Einstellung auf Secure Channel geändert habe, hat sich das Problem für mich gelöst. Diese Einstellung muss für mich gesetzt worden sein, als ich mein VS aktualisiert habe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X