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

648

Gibt es eine Möglichkeit, Git anzuweisen, ein selbstsigniertes Zertifikat zu akzeptieren?

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

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

git push origin master -f

Ich bekomme den Fehler:

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

fatal: git-http-push failed
Ian Vink
quelle
4
Woher wissen Sie, dass das Problem das Zertifikat ist?
Amber
1
Von einem PC aus können die Git-Tools eines anderen Benutzers das Zertifikat ignorieren und es funktioniert. Von einem Mac aus kann ich nicht herausfinden, wie ich es ignorieren soll.
Ian Vink
Der Fehler, den ich mit Git 2.1.1 erhalten habe: "Schwerwiegend: Zugriff auf 'https: //.../project.git/' nicht möglich: SSL-Zertifikatsproblem: Selbstsigniertes Zertifikat in der Zertifikatkette"
Stan Kurdziel
Unter OSX / Macintosh scheint Git die sslcainfoOption nicht zu verwenden . Wenn Sie curl --cacertIhren Repo-Pfad erfolgreich abrufen können, Git jedoch nicht funktioniert, sollten Sie das Zertifikat dem mysteriösen OSX-Schlüsselbundprogramm hinzufügen. mehr hier superuser.com/questions/605900/...
amwinter
Ich finde dieses Dokument nützlich gist.github.com/evantoli/f8c23a37eb3558ab8765
Mofaggol Hoshen

Antworten:

1164

Ein bestimmtes Zertifikat dauerhaft akzeptieren

Versuchen Sie es http.sslCAPathoder http.sslCAInfo. Die Antwort von Adam Spiers gibt einige gute Beispiele. Dies ist die sicherste Lösung für die Frage.

So deaktivieren Sie die TLS / SSL-Überprüfung für einen einzelnen Git-Befehl

Versuchen Sie -c, gitmit der richtigen Konfigurationsvariablen zu übergeben, oder verwenden Sie die Antwort von Flow :

git -c http.sslVerify=false clone https://example.com/path/to/git

So deaktivieren Sie die SSL-Überprüfung für ein bestimmtes Repository

Wenn das Repository vollständig unter Ihrer Kontrolle steht, können Sie Folgendes versuchen:

git config --global http.sslVerify false

Es gibt einige SSL-Konfigurationsoptionen in git. Aus der Manpage von git config:

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

Einige andere nützliche SSL-Konfigurationsoptionen:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.
Christopher
quelle
40
'git config --global http.sslVerify false' hat den Trick gemacht. Vielen Dank!
Chris Story
110
Sie sollten die Überprüfung von TLS (/ SSL) -Zertifikaten niemals global deaktivieren .
Flow
4
@Flow - Ich stimme vollkommen zu. Ich habe diese (jetzt ziemlich alte) Antwort bearbeitet, um das Deaktivieren der TLS / SSL-Zertifikatsüberprüfung polemischer zu gestalten.
Christopher
8
für mich git -c http.sslVerify=false clone https://domain.com/path/to/gitlöste dies mein Problem, danke ...
Fernando Gomes
2
@Flow Wenn wir uns in einer Arbeitsumgebung befinden, in der unser Arbeitgeber das MITM ist , welche Alternative gibt es, um TLS / SSL global zu deaktivieren?
Stevoisiak
164

Sie können einstellen GIT_SSL_NO_VERIFYauf true:

GIT_SSL_NO_VERIFY=true git clone https://example.com/path/to/git

oder konfigurieren Sie Git alternativ so, dass die Verbindung in der Befehlszeile nicht überprüft wird:

git -c http.sslVerify=false clone https://example.com/path/to/git

Beachten Sie, dass Sie anfällig für MitM-Angriffe sind , wenn Sie SSL / TLS-Zertifikate nicht überprüfen .

Fließen
quelle
2
Sie können das -cFlag on auch verwenden git, um einen Konfigurationswert für einen einzelnen Befehl zu ändern. Ich denke jedoch, dass diese Syntax sauberer ist.
Christopher
1
Ahh, ich wusste nichts über -cGit. Ich denke tatsächlich, dass es die sauberere Lösung ist, anstatt die Umwelt zu verschmutzen. :)
Flow
1
@ SkylarSaveland Beachten Sie, dass git -c http.sslVerify=false <gitSubCommand>dies auch über Vermittler möglich ist.
Flow
1
Ich sollte beachten, dass diese Lösung Sie für Angriffe von Männern in der Mitte öffnet.
Omikron
2
Antwort beschreibt nur die am wenigsten sichere Option .
cp.engr
139

Ich bin kein großer Fan der [EDIT: Originalversionen der] vorhandenen Antworten, da das Deaktivieren von Sicherheitsüberprüfungen ein letzter Ausweg sein sollte und nicht die erste angebotene Lösung. Auch wenn Sie selbstsignierten Zertifikaten beim ersten Empfang ohne eine zusätzliche Überprüfungsmethode nicht vertrauen können, giterschwert die Verwendung des Zertifikats für nachfolgende Vorgänge das Leben von Angriffen, die erst nach dem Herunterladen des Zertifikats auftreten, erheblich. Mit anderen Worten, wenn das Zertifikat , das Sie heruntergeladen ist echt, dann Sie ist gut von diesem Zeitpunkt an. Wenn Sie dagegen die Überprüfung einfach deaktivieren, sind Sie zu jedem Zeitpunkt offen für jede Art von Man-in-the-Middle-Angriff .

Um ein konkretes Beispiel zu nennen: Das berühmte repo.or.czRepository bietet ein selbstsigniertes Zertifikat . Ich kann diese Datei herunterladen, irgendwo platzieren /etc/ssl/certsund dann Folgendes tun:

# Initial clone
GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem \
    git clone https://repo.or.cz/org-mode.git

# Ensure all future interactions with origin remote also work
cd org-mode
git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

Beachten Sie, dass die Verwendung von local git confighier (dh ohne --global) bedeutet, dass dieses selbstsignierte Zertifikat nur für dieses bestimmte Repository vertrauenswürdig ist, was sehr hilfreich ist. Es ist auch besser als die Verwendung, GIT_SSL_CAPATHda das Risiko einer gitÜberprüfung durch eine andere Zertifizierungsstelle ausgeschlossen ist, die möglicherweise gefährdet sein könnte.

Adam Spires
quelle
3
Zufälligerweise verwendet http.sslCAPath die ssl_capath-Logik von libcurl. Ich denke, Sie könnten tatsächlich eine beliebige Anzahl von Zertifikaten im /etc/ssl/certs/Verzeichnis speichern und alles, was Sie brauchen, effizient aussortieren. Ich habe das --globalwohlgemerkt nicht getestet, aber es könnte Ihnen erlauben, ein mit einer ganzen Reihe von Zertifikaten zu verwenden. Es lohnt sich jedoch zu testen.
Christopher
6
Angesichts der Risiken einer vollständigen Deaktivierung der SSL-Überprüfung und der Tatsache, dass die Frage lautete: "Wie kann ich Git dazu bringen, ein selbstsigniertes Zertifikat zu akzeptieren?", Sollte dies die akzeptierte Antwort sein.
PLNech
5
In einer idealen Welt würde es so etwas wiegit config http.validCertFingerprint <base64-encoded-hash-of-certifcate>
Flow
1
Die einzige Antwort im Internet, die für mein Szenario tatsächlich funktioniert. Dies ist eine private Composer VCS-Bibliothek, die auf selbst gehostetem Gitlab über SSL gehostet wird und die ich für ein von git versioniertes Projekt benötige.
Dejv
1
Von einem frischen Klon; Dies kann in einer einzigen Zeile erfolgen: git clone --config http.sslCAInfo=<path_to_cert> https://repo.or.cz/org-mode.git(Nachher muss kein 'git config'-Befehl mehr aufgerufen werden.)
Aaron
39

Konfiguration des selbstsignierten Git-Zertifikats

tl; dr

Deaktivieren Sie NIEMALS alle SSL-Überprüfungen!

Dies schafft eine schlechte Sicherheitskultur. Sei nicht diese Person.

Die Konfigurationsschlüssel, nach denen Sie suchen, sind:

Diese dienen zum Konfigurieren von Host-Zertifikaten, denen Sie vertrauen

Diese dienen zum Konfigurieren IHRES Zertifikats, um auf SSL-Herausforderungen zu reagieren.

Wenden Sie die obigen Einstellungen selektiv auf bestimmte Hosts an.

Global .gitconfigfür selbstsignierte Zertifizierungsstellen

Für mich und meine Kollegen ist es hier gelungen, selbstsignierte Zertifikate ohne Deaktivierung zum Laufen zu bringen sslVerify. Bearbeiten Sie Ihre.gitconfig mit: git config --global -eFügen Sie diese hinzu:

# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[credential "https://your.domain.com"]
  username = user.name

  # Uncomment the credential helper that applies to your platform
  # Windows
  # helper = manager

  # OSX
  # helper = osxkeychain

  # Linux (in-memory credential helper)
  # helper = cache

  # Linux (permanent storage credential helper)
  # https://askubuntu.com/a/776335/491772

# Specify the scheme and host as a 'context' that only these settings apply 
# Must use Git v1.8.5+ for these contexts to work
[http "https://your.domain.com"]
  ##################################
  # Self Signed Server Certificate #
  ##################################

  # MUST be PEM format
  # Some situations require both the CAPath AND CAInfo 
  sslCAInfo = /path/to/selfCA/self-signed-certificate.crt
  sslCAPath = /path/to/selfCA/
  sslVerify = true

  ###########################################
  # Private Key and Certificate information #
  ###########################################

  # Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE, 
  # not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it.
  sslCert = /path/to/privatekey/myprivatecert.pem

  # Even if your PEM file is password protected, set this to false.
  # Setting this to true always asks for a password even if you don't have one.
  # When you do have a password, even with this set to false it will prompt anyhow. 
  sslCertPasswordProtected = 0

Verweise:

Geben Sie beim git clone-ing die Konfiguration an

Wenn Sie es pro Repo anwenden müssen, werden Sie in der Dokumentation aufgefordert, es einfach git config --localin Ihrem Repo-Verzeichnis auszuführen . Nun, das ist nicht nützlich, wenn Sie das Repo noch nicht lokal geklont haben, oder?

Sie können das global -> localhokey-pokey ausführen, indem Sie Ihre globale Konfiguration wie oben festlegen und diese Einstellungen dann in Ihre lokale Repo-Konfiguration kopieren, sobald sie geklont ist ...

ODER Sie können Konfigurationsbefehle angebengit clone , die nach dem Klonen auf das Ziel-Repo angewendet werden.

# Declare variables to make clone command less verbose     
OUR_CA_PATH=/path/to/selfCA/
OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt
MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem
SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0"

# With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos.
git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/

Einzeiler

EDIT: Siehe VonC ‚s Antwort , dass die Punkte aus einem Vorbehalt über absolute und relative Pfade für bestimmte git Versionen von 2.14.x / 2.15 auf diese Einzeiler

git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/

CentOS unable to load client key

Wenn Sie dies unter CentOS versuchen und Ihre .pemDatei Ihnen gibt

unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"

Dann möchten Sie diese StackOverflow-Antwort darüber, wie curlNSS anstelle von Open SSL verwendet wird.

Und Sie möchten aus der Quelle neu curlerstellen :

git clone http://github.com/curl/curl.git curl/
cd curl/
# Need these for ./buildconf
yum install autoconf automake libtool m4 nroff perl -y
#Need these for ./configure
yum install openssl-devel openldap-devel libssh2-devel -y

./buildconf
su # Switch to super user to install into /usr/bin/curl
./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/
make
make install

Starten Sie den Computer neu, da sich libcurl noch als gemeinsam genutzte Bibliothek im Speicher befindet

Python, Pip und Conda

Verwandte Themen : Wie füge ich dem von pip in Windows verwendeten CA Store ein benutzerdefiniertes CA-Stammzertifikat hinzu?

Josh Peak
quelle
Ich musste sicherstellen, dass das selbstsignierte Serverzertifikat im PEM-Format war, bevor Git es akzeptieren würde. Einige der obigen Antworten weisen auch darauf hin, dass nur der Pfad zum Ordner des Zertifikats mit angegeben werden muss http.sslCAPath. In meinem Fall musste ich http.sslCAInfodie spezifische Datei angeben. Dadurch konnte Git eine Verbindung zu unserem privaten GitHub herstellen, ohne die SSL-Validierung zu deaktivieren.
Zarepheth
@ Zarepheth Danke für diese Information. Ich bin auf dasselbe Problem gestoßen, das sowohl CAPath als auch CAInfo erfordert. Da unser CA-Zertifikat im PEM-Format war, habe ich die Dokumentation übersehen. Ich habe die Antwort mit diesen Ergänzungen aktualisiert. Ich bin froh, dass Sie sich sicher verbinden konnten.
Josh Peak
Dies ist wahrscheinlich die beste langfristige "Fix" -Antwort, wenn Sie gezwungen sind, HTTPS zum Klonen zu verwenden, und nicht nur SSH verwenden können, um das Zertifikat-Chaos zu umgehen.
Dragon788
Ich wollte gerade diese Antwort hinzufügen! Ich bin froh, dass es schon jemand anderes entdeckt hat.
Franklin Yu
14

Ich stoße immer wieder auf dieses Problem. Deshalb habe ich ein Skript geschrieben, um das selbstsignierte Zertifikat vom Server herunterzuladen und auf ~ / .gitcerts zu installieren. Aktualisieren Sie dann git-config, um auf diese Zertifikate zu verweisen. Es wird in der globalen Konfiguration gespeichert, sodass Sie es nur einmal pro Remote ausführen müssen.

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

Craig
quelle
Schön, obwohl es noch schöner wäre, die Option zu haben, lokale Konfiguration anstelle von global zu verwenden.
Adam Spires
3
Sie können es jederzeit teilen und die Option --global entfernen ;-)
Craig
Das ist ziemlich gut, kommt es in Charge?
Halter
10

Diese Antwort stammt aus diesem Artikel von Michael Kauffman.

Verwenden Sie Git für Windows mit einem SSL-Unternehmenszertifikat

Problem :

Wenn Sie ein SSL-Unternehmenszertifikat haben und Ihr Repo von der Konsole oder dem VSCode klonen möchten, wird die folgende Fehlermeldung angezeigt:

Schwerwiegend : Zugriff auf ' https: // myserver / tfs / DefaultCollection / _git / Proj / ' nicht möglich: Problem mit SSL-Zertifikat: Lokales Ausstellerzertifikat kann nicht abgerufen werden

Lösung :

  1. Exportieren Sie das selbstsignierte Stammzertifikat in eine Datei. Sie können dies in Ihrem Browser tun.

  2. Suchen Sie die Datei "ca-bundle.crt" in Ihrem Git-Ordner (aktuelle Version C: \ Programme \ Git \ usr \ ssl \ certs, wurde jedoch in der Vergangenheit geändert). Kopieren Sie die Datei in Ihr Benutzerprofil. Öffnen Sie es mit einem Texteditor wie VSCode und fügen Sie den Inhalt Ihres exportierten Zertifikats am Ende der Datei hinzu.

Jetzt müssen wir git konfigurieren, um die neue Datei zu verwenden:

git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt

Dadurch wird der .gitconfig-Datei im Stammverzeichnis Ihres Benutzerprofils der folgende Eintrag hinzugefügt.

[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt

AperioOculus
quelle
1
Vielen Dank, ich fand diese Antwort für Windows einfacher und sicherer.
Pisu
7

So deaktivieren Sie die SSL-Überprüfung für ein bestimmtes Repository Wenn das Repository vollständig unter Ihrer Kontrolle steht, können Sie Folgendes versuchen:

 git config --global http.sslVerify false
Saurabh Verma
quelle
3

Seien Sie vorsichtig , wenn Sie verwenden eine Auskleidung mit sslKey oder sslcert, wie in Josh Spitzen ‚s Antwort :

git clone -c http.sslCAPath="/path/to/selfCA" \
  -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" \
  -c http.sslVerify=1 \
  -c http.sslCert="/path/to/privatekey/myprivatecert.pem" \
  -c http.sslCertPasswordProtected=0 \
https://mygit.server.com/projects/myproject.git myproject

Nur Git 2.14.x / 2.15 (Q3 2015) kann einen Pfad wie ~username/mykeykorrekt interpretieren (während es dennoch einen absoluten Pfad wie interpretieren kann /path/to/privatekey).

Siehe Commit 8d15496 (20. Juli 2017) von Junio ​​C Hamano ( gitster) .
Mit freundlicher Unterstützung von Charles Bailey ( hashpling) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit 17b1e1d , 11. August 2017)

http.c: http.sslcertund http.sslkeysind beide Pfadnamen

Damals, als der moderne Codepfad http_options () erstellt wurde, um verschiedene http. * -Optionen unter 29508e1 ("Geteilte HTTP-Anforderungsfunktionalität isolieren", 2005-11-18, Git 0.99.9k) zu analysieren, und später für die Interaktion zwischen den mehreren korrigiert wurde Konfigurationsdateien in 7059cd9 ( " http_init(): Fix - Konfigurationsdatei Parsing", 2009-03-09, Git 1.6.3-RC0), wir analysierten Konfigurationsvariablen wie http.sslkey, http.sslcertals Plain - Vanilla - Strings, weil git_config_pathname()das versteht " ~[username]/" Präfix nicht existierte.

Später haben wir einige von ihnen (nämlich http.sslCAPathund http.sslCAInfo) konvertiert , um die Funktion zu verwenden, und Variablen hinzugefügt http.cookeyFile http.pinnedpubkey, die die Funktion von Anfang an verwenden möchten. Aus diesem Grund verstehen diese Variablen alle das ~[username]/Präfix " ".

Machen Sie die verbleibenden zwei Variablen http.sslcertund http.sslkeybeachten Sie auch die Konvention, da beide eindeutig Pfadnamen zu Dateien sind.

VonC
quelle
3

Fügen Sie unter Verwendung der 64-Bit-Version von Git unter Windows einfach das selbstsignierte CA-Zertifikat zu diesen Dateien hinzu:

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

Wenn es sich nur um ein selbstsigniertes Serverzertifikat handelt, fügen Sie es hinzu

  • C: \ Programme \ Git \ mingw64 \ ssl \ cert.pem
Flaviu
quelle
Dies war der beste Weg, um mit unserer Unternehmens-Firewall umzugehen, die den gesamten HTTPS-Verkehr neu signiert. Ich habe gerade die PEM-formatierte CRT-Datei des Firewall-Zertifikats als Text genommen und sie in das Ca-Bundle kopiert, und sie funktioniert wie ein Zauber.
Mitten.O
3

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

Von einem Tag auf den anderen funktionierte Git nicht mehr. Mit dem, was oben beschrieben wurde, stellte ich fest, dass Kaspersky ein selbstsigniertes persönliches Antiviren-Stammzertifikat in die Mitte stellt. Ich habe es nicht geschafft, Git dieses Zertifikat gemäß den obigen Anweisungen akzeptieren zu lassen. Ich habe das aufgegeben. Für mich funktioniert das Deaktivieren der Funktion zum Scannen verschlüsselter Verbindungen.

  1. Öffnen Sie Kaspersky
  2. Einstellungen> Zusätzliche> Netzwerk> Scannen Sie keine verschlüsselten Verbindungen

Danach funktioniert git wieder mit aktiviertem sslVerify.

Hinweis. Dies ist für mich immer noch nicht zufriedenstellend, da ich diese Funktion meines Anti-Virus aktiv haben möchte. In den erweiterten Einstellungen zeigt Kaspersky eine Liste von Websites an, die mit dieser Funktion nicht funktionieren. Github ist nicht als einer von ihnen aufgeführt. Ich werde es im Kaspersky-Forum überprüfen. Es scheint einige Themen zu geben, z. B. https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211

Henk
quelle
1

In der .gitconfig- Datei können Sie den unten angegebenen Wert hinzufügen, um das selbstsignierte Zertifikat akzeptabel zu machen

sslCAInfo = /home/XXXX/abc.crt

RahulMohan Kolakandy
quelle
Dies entspricht dem zweiten Schritt in Adams Antwort
Michael - Wo ist Clay Shirky
1

So mach ich es:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
Tadej
quelle
3
Nicht benutzen --global! Viele Tutorials zeigen, --globalaber es ist eine sehr schlechte Idee im Allgemeinen und für http.sslVerifyim Besonderen. Sobald Sie mehr als einen Klon aus verschiedenen Projekten, Unternehmen und Teams auf dem Computer haben, können Sie schnell in Schwierigkeiten geraten. Beispielsweise können Benutzer-IDs und E-Mails, die von einem Projekt zum nächsten gelangen, ziemlich peinlich sein. Die Verwendung von --globalon http.sslVerifykann Sie für alle Arten von Sicherheitsproblemen öffnen. Also: Nicht verwenden --global- es sei denn, Sie sind sich der Nebenwirkungen voll bewusst und bereit, das Risiko einzugehen.
Martin
1

Unter Windows hat das bei mir funktioniert:

Fügen Sie den Inhalt Ihres selbstsignierten Zertifikats am Ende der Ca-Bundle- Datei hinzu. Einschließlich der Zeilen ----- BEGIN CERTIFICATE ----- und ----- END CERTIFICATE -----

Der Speicherort der Ca-Bundle- Datei ist normalerweise C: \ Programme \ Git \ mingw64 \ ssl \ certs

Fügen Sie anschließend den Pfad der Ca-Bundle- Datei zur globalen Git-Konfiguration hinzu. Der folgende Befehl macht den Trick:git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

Anmerkung: Der Pfad hängt von Ihrem lokalen Pfad der Ca-Bundle-Datei ab!

rw026
quelle
1

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

Der Build Agent verwendet also https mit SSL-Zertifikat und PAT zur Authentifizierung. Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

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

git bash on build agent => git config –global http.sslcainfo “C: / Programme / Git / mingw64 / ssl / certs / ca-bundle.crt” Gehen Sie zu dieser Datei und hängen Sie den .cer-Inhalt an.

Somit kann der Build Agent auf das SSL-Zertifikat zugreifen

Palash Roy
quelle
0

Meine Antwort mag spät sein, aber es hat bei mir funktioniert. Es kann jemandem helfen.

Ich habe die oben genannten Schritte ausprobiert und das Problem wurde dadurch nicht gelöst.

Versuche diesgit config --global http.sslVerify false

Manjuboyz
quelle
0

Ich benutze eine Windows-Maschine und dieser Artikel hat mir geholfen. Grundsätzlich habe ich ca-bundle.crt im Editor geöffnet und darin Kettenzertifikate hinzugefügt (alle). Dieses Problem tritt normalerweise in Unternehmensnetzwerken auf, in denen zwischen System und Git Repo mittlere Männer sitzen. Wir müssen alle Zertifikate in der Zertifikatskette mit Ausnahme von Blattzertifikaten im Basis 64-Format exportieren und alle zu ca-bundle.crt hinzufügen und dann git für diese geänderte CRT-Datei konfigurieren.

Liebe Gupta
quelle