Wie setze ich GIT_SSL_NO_VERIFY nur für bestimmte Repos?

283

Ich muss einen Git-Server ohne ordnungsgemäße Zertifikate verwenden, möchte dies aber nicht

env GIT_SSL_NO_VERIFY=true git command

jedes Mal mache ich eine Git-Operation. Ich möchte aber auch SSL für andere Git-Repositorys aktiviert lassen. Gibt es eine Möglichkeit, dieses Lokal zu einem einzigen Repo zu machen?

Charles Randall
quelle
f15ijp.com/2012/08/… eine der besten Lösungen, die ich gefunden habe
vikas etagi

Antworten:

540

Du kannst tun

git config http.sslVerify false

in Ihrem spezifischen Repo, um die SSL-Zertifikatprüfung nur für dieses Repo zu deaktivieren.

Joachim Isaksson
quelle
54
git config --global http.sslVerify "false"
roothahn
24
Das --global sollte NICHT verwendet werden, da das OP ausdrücklich darum gebeten hat, dass es nur für bestimmte Repos benötigt wird.
Kannan Ekanath
9
Hinweis: Die --globalOption wird anscheinend benötigt, wenn ein Repo noch NICHT ausgecheckt ist (Optionen für ein Repo, das lokal noch nicht vorhanden ist, können nicht festgelegt werden). Man kann es danach immer wieder einschalten.
James Wilkins
2
Ich habe die Bearbeitung rückgängig gemacht, da die Frage dies ausdrücklich nicht gestellt hat und es aus Sicherheitsgründen eine schlechte Idee ist, dies global zu deaktivieren.
Étienne
2
Ich habe die Bearbeitung aus den gleichen Gründen wie oben erneut rückgängig gemacht. Diese Frage bezieht sich auf ein bestimmtes Repo. Wenn Sie eine Antwort für alle Repos wünschen, sollte dies eine separate Frage sein.
Calimo
121

Sie können wie folgt vorgehen

Für ein einzelnes Repo

git config http.sslVerify false

Für alle Repo

git config --global http.sslVerify false
Thirumalai Murugan
quelle
7
Dadurch wird die SSL-Überprüfung für alle Repositorys deaktiviert. Die ursprüngliche Frage betraf die Lokalisierung in einem einzelnen Repository.
Gwynne Raskind
4
Warum in aller Welt verwenden Sie Sudo überhaupt? Das lokale Repository benötigt es nicht und die Benutzerkonfiguration befindet sich in $ HOME (was auch immer sich auf Ihrem System befindet), sodass es auch kein sudo benötigt.
Mcepl
@ParthianShot Wenn sie nicht der Administrator sind, wie können sie dies ohne Sudo verwenden?
Thirumalai Murugan
1
@ Thirumalaimurugan Ist das dein Ernst? sudosollte nur verwendet werden, wenn Sie tatsächlich root benötigen , um etwas zu tun. Wie die Installation neuer Software, das Ändern wichtiger Systemdateien, das Neuformatieren von Laufwerken, das Neukonfigurieren des Netzwerks, das Verwalten von Diensten ... Die Frage dieses Mannes enthielt nichts, was darauf hindeuten könnte, dass er root brauchte, um etwas zu tun. Wenn Sie ein Administrator sind, sollten Sie die meisten Ihrer Befehle - einschließlich der Befehle, die Ihre Konfiguration ändern - die meiste Zeit ohne sudo ausführen.
Parthian Shot
1
@HolaSoyEduFelizNavidad, Als das OP "für alle Repo" sagte, bedeutete das OP "alle Repos für diesen Benutzer", nicht "alle Repos auf dem Computer".
vy32
98

Wie das, was Thirumalai gesagt hat, aber innerhalb des geklonten Repositorys und ohne --global. Dh

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false
mcepl
quelle
Gute Lösung für Fälle, in denen Siecould not lock global config file .gitconfig: Permission denied
Antongorodezkiy
1
Wenn Ihnen die Berechtigung für .gitconfig verweigert wurde, liegt ein schwerwiegender Fehler in Ihrem System vor. Ihr $ HOME sollte für Sie verfügbar sein (wo sollte .gitconfig sein, nicht wahr?).
Mcepl
Dies ist eigentlich nicht mein Server. Aber trotzdem danke. Und ich habe den Pfad aus der Fehlermeldung entfernt, tatsächlich versucht Git auf diesem Server, irgendwo in/var/www/...
antongorodezkiy
Diese Antwort enthält auch einige gute Erklärungen zu den Optionen. stackoverflow.com/a/11622001
dragon788
2
export GIT_SSL_NO_VERIFY = true
ETech
11

Insbesondere, wenn Sie einen rekursiven Klon benötigen

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git
user5958256
quelle
10

Wenn Sie sich auf einem Windows-Computer befinden und Git installiert haben, können Sie die folgenden Schritte ausführen:

  1. Wechseln Sie in den Ordner der Git-Installation, z. B.: C: \ Programme (x86) \ Git \ etc.
  2. Bearbeiten Sie die Datei: gitconfig
  3. Unter dem [http] Abschnitt, fügen Sie die Zeile: sslVerify = false

    [http]
      sslVerify = false
    
Shasi Kanth
quelle
1
Dies entspricht auch nicht der obigen Frage, wo er sagt, dass er andere Repos nicht beeinflussen möchte.
Bryanmac
und es ist wirklich hilfreich, wenn Sie keine Git-Befehle ausführen können! (ig mit Sourcetree auf einer virtuellen Windows-Maschine und Platzieren des src-Ordners in einem UNC-Pfad, in dem das eingebaute Sorcetree-Terminal nicht erkennen kann!
danrah
1
thx, das hat funktioniert, irgendwie hat das Kommandozeilen-Fix nicht funktioniert.
Nrj
Für TortoiseGit-Benutzer können Sie diesen Abschnitt in der lokalen Konfigurationsdatei bearbeiten, indem Sie eine kontextspezifische Aktualisierung der Einstellungen durchführen und die Option zum lokalen Bearbeiten auswählen
Steve Townsend
5

Es gibt eine einfache Möglichkeit, GIT so zu konfigurieren, dass Ihr Server richtig gehandhabt wird. Fügen Sie einfach einen bestimmten http-Abschnitt für Ihren Git-Server hinzu und geben Sie an, welchem ​​Zertifikat (Base64-codiert) vertraut werden soll:

~ / .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

Auf diese Weise haben Sie keine SSL-Fehler mehr und validieren das (normalerweise) selbstsignierte Zertifikat. Dies ist der beste Weg, da er Sie vor Man-in-the-Middle-Angriffen schützt. Wenn Sie nur die SSL-Überprüfung deaktivieren, sind Sie für diese Art von Angriffen anfällig.

https://git-scm.com/docs/git-config#git-config-httplturlgt

Matthias B.
quelle
5

Wenn Sie SSL-Prüfungen für einen Git-Server deaktivieren müssen, auf dem sich mehrere Repositorys befinden, können Sie Folgendes ausführen:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(Wenn Sie immer noch git <v1.8.5 verwenden, führen Sie aus git config --global http.https://my.bad.server.sslVerify false )

Erläuterungen aus der Dokumentation, in der sich der Befehl am Ende befindet, zeigen den .gitconfigInhalt wie folgt :

[http "https://my.bad.server"]
        sslVerify = false

Zertifikatsprüfungen für diesen Server werden unabhängig vom Repository ignoriert.

Sie haben auch einige Erklärungen im Code

Mat M.
quelle
4

Das funktioniert bei mir:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
Tadej
quelle
2

Diese Frage taucht immer wieder auf und ich habe noch kein zufriedenstellendes Ergebnis gefunden. Hier ist, was für mich funktioniert hat (basierend auf einer vorherigen Antwort https://stackoverflow.com/a/52706362/1806760 , die nicht funktioniert):

Mein Server ist https://gitlab.dev über ein selbstsigniertes Zertifikat.

Erster Lauf git config --system --edit(von einer erhöhten Eingabeaufforderung, wechseln Sie --systemzu , --globalwenn Sie es nur für Ihre Benutzer tun wollen), dann fügen Sie den folgenden Code - Schnipsel nach allen vorherigen [http]Abschnitten:

[http "https://gitlab.dev"]
        sslVerify = false

Überprüfen Sie dann, ob Sie alles richtig gemacht haben:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false
Mrexodia
quelle
1

Wenn Sie für Windows eine globale Konfiguration wünschen, führen Sie diese aus

git config --global http.sslVerify false
Codierung
quelle
OP bat specific reposausdrücklich um
Malat
0

Wenn Sie dies unter Linux im Git-Repository-Ordner aufrufen:

git config http.sslVerify false

Dies wird sslVerify = falseim [http]Abschnitt der configDatei im .gitOrdner hinzugefügt , der auch die Lösung sein kann, wenn Sie dies manuell hinzufügen möchten mit nano .git/config:

...
[http]
  sslVerify = false
rubo77
quelle