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?

1voto

Muhammad Bilal Punkte 794

Dies funktioniert für mich. Ich habe die Eingabeaufforderung geöffnet und folgenden Befehl ausgeführt und dann erneut ausgeführt.

git config --global http.sslVerify false

1voto

JosephDoggie Punkte 1422

Ich habe diesen Fehler erhalten, als ich versucht habe, das Projekt zu "klonen". Ein Workaround ist es, einfach die Option "Als ZIP herunterladen" auf der Webseite zu verwenden, was für mich erreicht hat, was ich tun wollte.

0voto

Sven Haile Punkte 931

Fehler

Push fehlgeschlagen
fatal: Zugriff verweigert
SSL-Zertifikatsproblem: lokales Ausstellerzertifikat kann nicht abgerufen werden

Grund

Nach dem Commit von Dateien auf einem lokalen Rechner kann der Fehler "Push fehlgeschlagen" auftreten, wenn die lokalen Git-Verbindungseinstellungen veraltet sind (z.B. Änderung von HTTP zu HTTPS).

Lösung

  1. Öffnen Sie den .git Ordner im Stammverzeichnis des lokalen Verzeichnisses
  2. Öffnen Sie die Datei config in einem Code-Editor oder Texteditor (VS Code, Notepad, Textpad)
  3. Ersetzen Sie HTTP-Links innerhalb der Datei durch den neuesten HTTPS oder SSH Link, der auf der Webseite des entsprechenden Git-Repositorys verfügbar ist (Clone-Button)
    Beispiele:

    url = http://git.[host]/[group/projekt/repo_name]     (aktueller Pfad)

    ersetzen Sie ihn durch

    url = ssh://git@git.[host]:/[group/projekt/repo_name] (neuer Pfad SSH)
    url = https://git.[host]/[group/projekt/repo_name]    (neuer Pfad HTTPS)

0voto

arunkumar A Punkte 51

Ich habe das Problem gelöst, indem ich den folgenden Eintrag in die Datei ${HOME}/.gitconfig hinzugefügt habe

[remote "origin"]

proxy=

In den meisten Fällen tritt dieses Problem auf, wenn der Proxy auf Ihrem Rechner aktiviert ist, daher wird der oben genannte Eintrag das Problem beheben.

0voto

w. Patrick Gale Punkte 604

Möglicherweise haben Sie ein DNS-Problem und nicht ein Zertifikatsproblem, daher sollten Sie, bevor Sie die SSL-Überprüfung in Ihrer Git-Shell deaktivieren, ein DNS-Problem ausschließen. Fälle wie diese wurden in Frage- und Antwortforen wie https-issues-possibly-related-to-dns erwähnt. Wenn Sie WSL auf Windows als Ihr Terminal verwenden, können Sie versuchen, sudo echo nameserver 8.8.8.8 > /etc/resolv.conf auszuführen und dann die Git-Befehle auszuführen, um zu sehen, ob sich etwas ändert. Dies scheint keine dauerhafte DNS-Lösung zu sein (nur für die Dauer Ihrer Terminalsession), aber es könnte Ihnen helfen festzustellen, ob es sich um ein DNS-Problem und nicht um ein Zertifikatsproblem handelt. Sie könnten auch dieses Dokument zur Konfiguration Ihres Netzwerks zur Verwendung eines öffentlichen DNS überprüfen. Auch dies dient nur dazu, festzustellen, ob Ihre DNS-Einstellungen möglicherweise angepasst werden müssen, um die Zertifikatsprobleme zu lösen.

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