950 Stimmen

Wie kann ich Git dazu bringen, ein selbstsigniertes Zertifikat zu akzeptieren?

Gibt es eine Möglichkeit, Git so zu konfigurieren, dass es ein selbstsigniertes Zertifikat akzeptiert?

Ich verwende einen https-Server, um einen Git-Server zu hosten, aber im Moment ist das Zertifikat selbst signiert.

Wenn ich versuche, das Projektarchiv dort zum ersten Mal zu erstellen:

git push origin master -f

Ich erhalte die Fehlermeldung:

error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed

28voto

Palash Roy Punkte 1187

Es ist keine gute Praxis, http.sslVerify auf false zu setzen. Stattdessen können wir ein SSL-Zertifikat verwenden.

Der Build-Agent verwendet also enter image description here

enter image description here

enter image description here

Kopieren Sie den Inhalt der Datei cer einschließlich -begin und -end--.

git bash auf build agent => git config -global http.sslcainfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt" Gehen Sie zu dieser Datei und fügen Sie den .cer-Inhalt an.

So kann der Build-Agent auf das SSL-Zertifikat zugreifen

16voto

Craig Punkte 4028

Da ich immer wieder auf dieses Problem stoße, habe ich ein Skript geschrieben, das das selbstsignierte Zertifikat vom Server herunterlädt und in ~/.gitcerts installiert und dann git-config aktualisiert, um auf diese Zertifikate zu verweisen. Das Skript wird in der globalen Konfiguration gespeichert, so dass Sie es nur einmal pro Remote ausführen müssen.

https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh

6voto

Flaviu Punkte 831

Wenn Sie die 64bit-Version von Git unter Windows verwenden, fügen Sie einfach das selbstsignierte CA-Zertifikat in diese Dateien ein:

  • C:\Program Dateien \Git\mingw64\ssl\certs\ca -bundle.crt
  • C:\Program Dateien \Git\mingw64\ssl\certs\ca -bundle.trust.crt

Wenn es nur ein selbstsigniertes Serverzertifikat ist, fügen Sie es in

  • C:\Program Dateien \Git\mingw64\ssl\cert.pem

5voto

Henk Punkte 51

Überprüfen Sie Ihre Antiviren- und Firewall-Einstellungen.

Von einem Tag auf den anderen funktionierte git nicht mehr. Bei dem, was oben beschrieben ist, habe ich festgestellt, dass Kaspersky ein selbstsigniertes persönliches Root-Zertifikat des Antivirus in die Mitte stellt. Ich habe es nicht geschafft, dass Git dieses Zertifikat nach den obigen Anweisungen akzeptiert. Ich habe das aufgegeben. Was bei mir funktioniert, ist, die Funktion zum Scannen verschlüsselter Verbindungen zu deaktivieren.

  1. Kaspersky öffnen
  2. Einstellungen > Zusätzlich > Netzwerk > Verschlüsselte Verbindungen nicht scannen

Danach funktioniert git wieder mit aktiviertem sslVerify.

Anmerkung. Das ist für mich immer noch nicht zufriedenstellend, da ich diese Funktion meines Antivirenprogramms gerne aktiv hätte. In den erweiterten Einstellungen zeigt Kaspersky eine Liste von Websites an, die mit dieser Funktion nicht funktionieren. Github ist nicht unter diesen aufgeführt. Ich werde das im Kaspersky-Forum überprüfen. Dort scheint es einige Themen zu geben, z.B. https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211

5voto

wero026 Punkte 1127

Unter Windows hat das bei mir funktioniert:

Fügen Sie den Inhalt Ihres selbstsignierten Zertifikats an das Ende der Datei ca-bundle Datei. Einschließlich der -----BEGIN CERTIFICATE----- y -----END BESCHEINIGUNG----- Zeilen

Der Standort der ca-bundle Datei ist normalerweise C:\Program Dateien \Git\mingw64\ssl\certs

Fügen Sie anschließend den Pfad der ca-bundle Datei in die globale Git-Konfiguration aufzunehmen. Der folgende Befehl erfüllt diesen Zweck: git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

Bemerkung: Der Pfad hängt von Ihrem lokalen Pfad der ca-Bundle-Datei ab!

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