Ich benutze Git unter Windows. Ich habe das msysGit-Paket installiert. Mein Test-Repository verfügt über ein selbstsigniertes Zertifikat auf dem Server. Ich kann ohne Probleme über HTTP auf das Repository zugreifen und es verwenden. Der Wechsel zu HTTPS führt zu folgendem Fehler:
Problem mit dem SSL-Zertifikat: Lokales Ausstellerzertifikat kann nicht abgerufen werden.
Ich habe das selbstsignierte Zertifikat in den vertrauenswürdigen Stammzertifizierungsstellen meines Windows 7-Client-Computers installiert. Ich kann in Internet Explorer ohne Fehlermeldungen zur URL des HTTPS-Repositorys navigieren.
In diesem Blogbeitrag von Philip Kelley wurde erklärt, dass cURL den Zertifikatspeicher des Clientcomputers nicht verwendet. Ich folgte dem Rat des Blogposts, eine private Kopie von curl-ca-bundle.crt
Git zu erstellen und Git für die Verwendung zu konfigurieren. Ich bin sicher, dass Git meine Kopie verwendet. Wenn ich die Kopie umbenenne; Git beschwert sich, dass die Datei fehlt.
Ich habe mein Zertifikat eingefügt, wie im Blog-Beitrag erwähnt. Es wird weiterhin die Meldung "Lokales Ausstellerzertifikat kann nicht abgerufen werden" angezeigt.
Ich habe überprüft, ob Git noch funktioniert, indem ich ein GitHub-Repository über HTTPS geklont habe.
Das einzige , was ich sehe , dass auf die Blog - Post anders ist , ist , dass mein Zertifikat ist die Wurzel - es gibt keine Kette , es zu erreichen ist. Mein Zertifikat stammt ursprünglich aus dem Klicken auf den IIS8 IIS Manager-Link "Selbstsigniertes Zertifikat erstellen". Vielleicht unterscheidet sich ein Zertifikat dadurch in gewisser Weise von den Erwartungen von cURL.
Wie kann ich Git / cURL dazu bringen, das selbstsignierte Zertifikat zu akzeptieren?
{ "strict-ssl": false }
. Danke mir nicht, danke diesem Typen: stapp.space/fight-with-2 Ich habe fast 5 Stunden lang mit diesem Fehler gekämpft, gerade !!Antworten:
Öffnen Sie Git Bash und führen Sie den Befehl aus, wenn Sie die SSL-Überprüfung vollständig deaktivieren möchten.
Hinweis: Diese Lösung kann Sie für Angriffe wie Man-in-the-Middle-Angriffe öffnen . Aktivieren Sie daher die Überprüfung so bald wie möglich erneut:
quelle
git -c http.sslVerify=false clone https://domain.com/path/to/git
Das Problem ist, dass Git standardmäßig das Krypto-Backend "Linux" verwendet.
Ab Git für Windows 2.14 können Sie Git jetzt so konfigurieren, dass SChannel, die integrierte Windows-Netzwerkebene, als Krypto-Backend verwendet wird. Dies bedeutet, dass Sie den Windows-Zertifikatspeichermechanismus verwenden und den Curl-CA-Speichermechanismus nicht explizit konfigurieren müssen: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx
Einfach ausführen:
Das sollte helfen.
Die Verwendung von Schannel ist mittlerweile die Standardeinstellung bei der Installation von Git für Windows. Es wird außerdem empfohlen, Repositorys nicht mehr per SSH auszuchecken, da https einfacher zu konfigurieren ist und weniger wahrscheinlich von einer Firewall blockiert wird. Dies bedeutet weniger Ausfallwahrscheinlichkeit.
quelle
git config --global http.sslCAInfo <my-server-self-signed-cert.pem>
nicht funktioniert. Ich habehttp.sslCAInfo
die Verwendung eines selbstsignierten Zertifikats für meinen Server konfiguriert und habe aus diesem Grund (möglicherweise nicht mit OP identisch) das Problem "SSL-Zertifikat: Lokales Ausstellerzertifikat kann nicht abgerufen werden" festgestellt, wenn ich zgit clone https://github.com/Microsoft/vscode.git
. Schließlich habe ich die Antwort von stackoverflow.com/a/47196562/1323552 (Ben PP Tung) verwendet, um meine sslCAInfo-Konfiguration für meinen Git-Server zu optimieren und zu lösen.Ich hatte auch dieses Problem. In meinem Fall habe ich versucht, einen Git-Hook nach dem Empfang zu erhalten, um bei jedem Push eine Arbeitskopie auf einem Server zu aktualisieren. Es wurde versucht, den Anweisungen in dem Blog zu folgen, auf das Sie verlinkt haben. Hat auch bei mir nicht funktioniert und das Überschreiben der Einstellungen pro Benutzer schien auch nicht zu funktionieren.
Am Ende musste ich die SSL-Überprüfung (wie im Artikel erwähnt) für Git als Ganzes deaktivieren. Nicht die perfekte Lösung, aber es wird funktionieren, bis ich eine bessere herausfinden kann.
Ich habe die Git-Konfigurationstextdatei (mit meiner bevorzugten neutralen App mit Zeilenende wie Notepad ++) bearbeitet unter:
Im Block [http] habe ich eine Option zum Deaktivieren von sslVerify hinzugefügt. Es sah so aus, als ich fertig war:
Das hat funktioniert.
HINWEIS:
Dies deaktiviert die SSL-Überprüfung und wird nicht als langfristige Lösung empfohlen.
Sie können dieses Pro-Repository deaktivieren, das immer noch nicht großartig ist, aber die Einstellung lokalisiert.
Mit dem Aufkommen von LetsEncrypt.org ist es nun ziemlich einfach, automatisiert und kostenlos, SSL als Alternative zu selbstsignierten Zertifikaten einzurichten, und die Notwendigkeit, sslVerify zu deaktivieren, entfällt.
quelle
sslCAinfo
Konfigurationseintrag hingewiesen haben. Aber ich stimme der Antwort nicht zu, da es wenig sinnvoll ist, SSL für git systemweit dauerhaft zu deaktivieren (haben Sie versucht, es systemweit zu deaktivieren, dann zu klonen, dann wieder zu aktivieren und dann im zu deaktivieren? lokale Git-Konfiguration für das neu geklonte Repo?).git -c http.sslVerify=false clone https://...
kiddailey Ich denke, es war ziemlich nah dran, aber ich würde die SSL-Überprüfung nicht deaktivieren, sondern nur das lokale Zertifikat bereitstellen:
In der Git-Konfigurationsdatei
Oder über die Kommandozeile:
quelle
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
git config --list --show-origin
sehen, wo die http.sslCAinfo-Konfiguration eingestellt istIch habe mich auch diesem Problem gestellt. Und schließlich wurde durch die Anleitung von diesem MSDN-Blog gelöst .
Aktualisieren
Eigentlich müssen Sie das Zertifikat in der git-Zertifikatdatei curl-ca-bundel.cert hinzufügen, die sich im Verzeichnis Git \ bin befindet.
Schritte
Überprüfen Sie abschließend den Status. Bitte beachten Sie, dass Sie die Datei curl-ca-bundle.crt vor dem Bearbeiten sichern, um auf der sicheren Seite zu bleiben.
quelle
ca-bundle.crt
und sich inmingw64\ssl\certs
oder befindenmingw32\ssl\certs
.Die Antwort auf diese Frage mit makecert for Development SSL hat dies für mich behoben.
Ich weiß nicht warum, aber das Zertifikat, das über den einfachen Link "Selbstsigniertes Zertifikat erstellen" in IIS Manager erstellt wurde, reicht nicht aus. Ich folgte dem Ansatz in der verknüpften Frage zum Erstellen und Installieren eines selbstsignierten CA-Stamms. Verwenden Sie diese Option, um ein Serverauthentifizierungszertifikat für meinen Server auszustellen. Ich habe beide in IIS installiert.
Damit ist meine Situation dieselbe wie in dem Blog-Beitrag, auf den in der ursprünglichen Frage verwiesen wird. Sobald das Stammzertifikat kopiert / in curl-ca-bundle.crt eingefügt wurde, war die Kombination aus git und curl erfüllt.
quelle
Um zu vermeiden, dass die SSL-Überprüfung vollständig deaktiviert oder die von git verwendete gebündelte CA-Zertifikatdatei dupliziert / gehackt wird, können Sie die Zertifikatkette des Hosts in eine Datei exportieren und git dazu bringen, sie zu verwenden:
Wenn dies nicht funktioniert, können Sie die SSL-Überprüfung nur für den Host deaktivieren :
Hinweis: Vorbehaltlich möglicher Angriffe von Mann in der Mitte, wenn die SSL-Überprüfung deaktiviert ist.
quelle
--global
Option nicht erforderlich ist: Wenn Sie sie weglassen--global
, gilt die Einstellung nur für dieses bestimmte Git-Repo.Ich hatte gerade das gleiche Problem, aber ich verwende Sourcetree unter Windows. Gleiche Schritte auch für normales GIT unter Windows. Mit den folgenden Schritten konnte ich dieses Problem lösen.
Dies sollte Ihr Problem mit den selbstsignierten Zertifikaten und der Verwendung von GIT lösen.
Ich habe versucht, die Konfiguration "http.sslcapath" zu verwenden, aber dies hat nicht funktioniert. Auch wenn ich nicht die gesamte Kette in die Zertifikatsdatei aufgenommen hätte, wäre dies ebenfalls fehlgeschlagen. Wenn jemand Hinweise dazu hat, lassen Sie es mich bitte wissen, da das oben Gesagte für eine neue Installation wiederholt werden muss.
Wenn dies die System-GIT ist, können Sie die Optionen auf der Registerkarte WERKZEUGE -> Optionen GIt verwenden, um die System-GIT zu verwenden. Dadurch wird das Problem auch im Quellenbaum gelöst.
quelle
Im Fall von Github-Repositorys (oder nicht selbstsignierten Zertifikaten) wurde das Problem behoben , indem Sie bei der Installation von Git-on-Windows unten eine Auswahl treffen .
quelle
Ich hatte dieses Problem schon einmal und löse es mit der folgenden Konfiguration.
[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate
Seit Git 2.3.1 können Sie
https://your.domain
nach http setzen, um anzugeben, dass das folgende Zertifikat nur für dieses Zertifikat bestimmt ist.quelle
git config --global http.sslCAInfo <your-server-self-signed-cert.pem>
zuvor konfiguriert haben (was den Fehler verursacht, dass das Zertifikat des lokalen Ausstellers nicht abgerufen werden kann)C:\Program Files\Git\bin
und hinzuC:\Program Files\Git\mingw64\bin
Dann versuchen Sie etwas wie:
git clone https://github.com/heroku/node-js-getting-started.git
quelle
Eine Sache, die mich durcheinander gebracht hat, war das Format des Pfades (auf meinem Windows-PC). Ich hatte ursprünglich das:
Dies schlug jedoch mit dem Fehler "Lokales Ausstellerzertifikat kann nicht abgerufen werden" fehl.
Was schließlich funktionierte, war Folgendes:
quelle
In meinem Fall wird beim Installieren des ConEmu-Terminals für Windows 7 das
ca-bundle
während der Installation unter erstelltC:\Program Files\Git\mingw64\ssl\certs
.Daher muss ich die folgenden Befehle auf dem Terminal ausführen, damit es funktioniert:
Daher
C:\Program Files\Git\etc\gitconfig
enthält meine Folgendes:Außerdem habe ich bei der Installation des Git dieselbe Option wie hier erwähnt gewählt .
Ich hoffe, das hilft!
quelle
So beheben Sie das Problem mit dem spezifischen Fehler SSL-Zertifikat: Das lokale Ausstellerzertifikat kann in git nicht abgerufen werden
Ich hatte das gleiche Problem mit Let's Encrypt-Zertifikaten.
Eine Website mit https, die wir nur brauchen:
aber git pull sagt:
Um dies zu beheben, müssen wir außerdem Folgendes hinzufügen:
quelle
Verwenden Sie diesen Befehl, bevor Sie Composer Update / Install ausführen:
quelle