Jak ustawić GIT_SSL_NO_VERIFY tylko dla określonych repozytoriów?


283

Muszę używać serwera git bez odpowiednich certyfikatów, ale nie chcę tego robić

env GIT_SSL_NO_VERIFY=true git command

za każdym razem, gdy wykonuję operację git. Ale chciałbym również pozostawić włączony protokół SSL dla innych repozytoriów git. Czy istnieje sposób, aby uczynić to lokalnym jednym repozytorium?



f15ijp.com/2012/08/… jedno z najlepszych rozwiązań, jakie znalazłem
vikas etagi

Odpowiedzi:


540

Możesz to zrobić

git config http.sslVerify false

w konkretnym repozytorium, aby wyłączyć sprawdzanie certyfikatu SSL tylko dla tego repozytorium.


54
git config --global http.ssl Zweryfikuj „false”
roothahn

24
--Global NIE powinien być używany, ponieważ OP wyraźnie zażądał, aby chciał go tylko dla określonych repozytoriów.
Kannan Ekanath,

9
Uwaga: Wydaje się, że --globalopcja JEST potrzebna, gdy repo NIE jest jeszcze wypisane (nie można ustawić opcji repo, które nie istnieje jeszcze lokalnie). Zawsze można go ponownie włączyć po.
James Wilkins

2
Cofnąłem edycję, ponieważ pytanie specjalnie tego nie wymagało, a wyłączanie tego globalnie ze względów bezpieczeństwa jest złym pomysłem.
Étienne

2
Cofnąłem edycję ponownie z tych samych powodów, co powyżej. To pytanie dotyczy konkretnego repozytorium. Jeśli chcesz uzyskać odpowiedź na wszystkie repozytorium, powinno to być osobne pytanie.
Calimo

121

Możesz wykonać następujące czynności

Dla pojedynczego repo

git config http.sslVerify false

Dla wszystkich repo

git config --global http.sslVerify false

7
Spowoduje to wyłączenie weryfikacji SSL dla wszystkich repozytoriów. Pierwotne pytanie dotyczyło uczynienia go lokalnym dla pojedynczego repozytorium.
Gwynne Raskind,

4
Dlaczego na świecie w ogóle używasz sudo? lokalne repozytorium tego nie potrzebuje, a konfiguracja użytkownika jest w $ HOME (cokolwiek jest w twoim systemie), więc nie potrzebuje sudo.
mcepl

@ParthianShot, jeśli nie są administratorem, jak mogą to wykorzystać bez sudo?
Thirumalai murugan

1
@Thirumalaimurugan Poważnie teraz? sudopowinien być używany tylko wtedy, gdy potrzebujesz roota, aby coś zrobić. Jak instalowanie nowego oprogramowania, modyfikowanie ważnych plików systemowych, formatowanie dysków, rekonfiguracja sieci, zarządzanie usługami ... W pytaniu tego faceta nie było nic, co sugerowałoby, że musi zrobić root. Jeśli jesteś administratorem, powinieneś uruchamiać większość swoich poleceń - włączając te, które zmieniają konfigurację - bez sudo przez większość czasu.
Parthian Shot

1
@HolaSoyEduFelizNavidad, kiedy OP powiedział „dla wszystkich repozytoriów”, OP oznaczało „wszystkie repozytoria dla tego użytkownika”, a nie „wszystkie repozytoria na komputerze”.
vy32,

98

Jak to powiedział Thirumalai, ale w sklonowanym repozytorium i bez niego --global. To znaczy,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false

Dobre rozwiązanie dla przypadków, gdy tycould not lock global config file .gitconfig: Permission denied
antongorodezkiy

1
Jeśli odmówiono zezwolenia na .gitconfig, istnieje coś poważnie niezgodnego z twoim systemem. Twój $ HOME powinien być dla ciebie dostępny (gdzie powinien być .gitconfig, prawda?).
mcepl

To nie jest tak naprawdę mój serwer. Ale i tak dziękuję. I usunąłem ścieżkę z komunikatu o błędzie, właściwie na tym serwerze git próbuje uzyskać dostęp do .gitconfig gdzieś w/var/www/...
antongorodezkiy

Ta odpowiedź zawiera także kilka świetnych wyjaśnień na temat opcji. stackoverflow.com/a/11622001
dragon788

2
eksport GIT_SSL_NO_VERIFY = true
ETech

11

W szczególności, jeśli potrzebujesz rekurencyjnego klonu

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

10

Jeśli korzystasz z komputera z systemem Windows i masz zainstalowanego Git, możesz spróbować wykonać następujące czynności:

  1. Przejdź do folderu instalacji Git, np .: C: \ Program Files (x86) \ Git \ etc
  2. Edytuj plik: gitconfig
  3. W sekcji [http] dodaj wiersz: sslVerify = false

    [http]
      sslVerify = false
    

1
to również nie odpowiada powyższemu pytaniu, w którym mówi, że nie chce wpływać na inne repo.
bryanmac

i jest to naprawdę pomocne, gdy nie możesz uruchamiać poleceń git! (np. posiadanie sourcetree na maszynie wirtualnej z systemem Windows i umieszczenie folderu src w ścieżce UNC, w której wbudowany terminal sorcetree nie może rozpoznać!
danrah

1
Dzięki, działało, jakoś poprawka wiersza poleceń nie działała.
Nrj

W przypadku użytkowników TortoiseGit możesz edytować tę sekcję w lokalnym pliku konfiguracyjnym, wykonując kontekstową aktualizację ustawień i wybierając opcję edycji tylko lokalnej
Steve Townsend

5

Istnieje prosty sposób skonfigurowania GIT do obsługi serwera we właściwy sposób. Po prostu dodaj konkretną sekcję http dla swojego serwera git i określ, który certyfikat (zakodowany w Base64) zaufać:

~ / .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

W ten sposób nie będziesz już mieć błędów SSL i zweryfikujesz (zwykle) samopodpisany certyfikat. To najlepsza droga, ponieważ chroni cię przed atakami typu man-in-the-middle. Po wyłączeniu weryfikacji ssl jesteś podatny na tego rodzaju ataki.

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


5

Jeśli musisz wyłączyć sprawdzanie protokołu SSL dla jednego serwera git obsługującego kilka repozytoriów, możesz uruchomić:

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

(Jeśli nadal używasz git <v1.8.5, uruchom git config --global http.https://my.bad.server.sslVerify false)

Objaśnienie z dokumentacji, w której znajduje się polecenie, pokaż .gitconfigtreść wyglądającą następująco:

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

Zignoruje wszelkie sprawdzanie certyfikatów dla tego serwera, niezależnie od repozytorium.

Masz także jakieś wyjaśnienie w kodzie


4

To działa dla mnie:

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

2

To pytanie wciąż się pojawia i nie znalazłem jeszcze satysfakcjonującego rezultatu, więc oto, co zadziałało dla mnie (na podstawie poprzedniej odpowiedzi https://stackoverflow.com/a/52706362/1806760 , która nie działa):

Mój serwer ma https://gitlab.devcertyfikat z podpisem własnym.

Najpierw uruchom git config --system --edit(z wiersza polecenia z podwyższonym poziomem uprawnień zmień --systemna, --globaljeśli chcesz to zrobić tylko dla użytkownika), a następnie wstaw następujący fragment kodu po poprzednich [http]sekcjach:

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

Następnie sprawdź, czy zrobiłeś wszystko poprawnie:

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

1

w systemie Windows, jeśli chcesz konfigurację globalną, uruchom

git config --global http.sslVerify false

OP poprosił o specific reposwyraźne
malat

0

W systemie Linux, jeśli wywołasz to w folderze repozytorium git:

git config http.sslVerify false

Spowoduje to dodanie sslVerify = falsew [http]części configpliku w .gitfolderze, który może być również rozwiązanie, jeśli chcesz dodać to ręcznie nano .git/config:

...
[http]
  sslVerify = false
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.