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?

4voto

Wayne S. Punkte 104

Etwas, das mich durcheinander gebracht hat, war das Format des Pfades (auf meinem Windows-PC). Ich hatte ursprünglich dies:

git config --global http.sslCAInfo C:\certs\cacert.pem

Aber das scheiterte mit dem Fehler "unable to get local issuer certificate".

Was schließlich funktioniert hat, war dies:

git config --global http.sslCAInfo "C:\\certs\\cacert.pem"

4voto

Celso Xavier Luz Punkte 129

Hat mein Problem gelöst git config --global http.sslBackend schannel

3voto

Anton Tropashko Punkte 4907
git config --global http.sslbackend secure-transport

(musste das nach dem Update auf Big Sr machen)

3voto

Manjeet Punkte 795
  1. Zertifikat von diesem Link herunterladen: https://github.com/bagder/zwischenzertifikat
  2. Hinzufügen zu C:\Program Files\Git\bin und C:\Program Files\Git\mingw64\bin

Dann versuchen Sie etwas Ähnliches: git clone https://github.com/heroku/node-js-getting-started.git

3voto

okan Punkte 830

In meinem Fall musste ich unterschiedliche Zertifikate für unterschiedliche Git-Repositorys verwenden.

Befolgen Sie die folgenden Schritte (Wenn Sie ein Zertifikat Ihres Repositorys haben, können Sie ab Schritt 5 lesen.)

  1. Gehen Sie zur Website des Remote-Repositorys. Zum Beispiel: github.com, bitbucket.org, tfs.beispiel...

  2. Klicken Sie auf das Schloss-Symbol auf der linken oberen Seite und dann auf Zertifikat.

  3. Wechseln Sie zur Registerkarte Zertifikatspfad und doppelklicken Sie auf .. Stammzertifikat

  4. Wechseln Sie zur Registerkarte Details und klicken Sie auf Datei kopieren.

  5. Exportieren/Kopieren Sie das Zertifikat an den gewünschten Ort. Zum Beispiel: C:\certs\beispiel.cer

  6. Öffnen Sie das Git-Bash in Ihrem lokalen Repository-Ordner und geben Sie ein:

    $ git config http.sslCAInfo "C:\certs\beispiel.cer"

Jetzt können Sie für jedes Repository verschiedene Zertifikate verwenden.

Denken Sie daran, dass der Aufruf mit dem --global-Parameter auch die Zertifikate der Git-Repositorys in anderen Ordnern ändert, daher sollten Sie den --global-Parameter nicht verwenden, wenn Sie diesen Befehl ausführen.

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