GIT_SSL_NO_VERIFY'yi yalnızca belirli depolar için nasıl ayarlarım?


283

Git sunucusunu uygun sertifikalar olmadan kullanmak zorundayım, ancak yapmak zorunda değilim

env GIT_SSL_NO_VERIFY=true git command

her seferinde bir git işlemi yapıyorum. Ancak diğer git depoları için SSL'yi etkin bırakmak da istiyorum. Bunu tek bir repo için yerel yapmanın bir yolu var mı?



f15ijp.com/2012/08/… bulduğum en iyi çözümlerden biri
vikas etagi

Yanıtlar:


540

Yapabilirsin

git config http.sslVerify "false"

yalnızca bu repo için SSL sertifikası denetimini devre dışı bırakmak üzere.


55
git config --global http.sslVerify "false"
roothahn

24
--Global KULLANILMAMALIDIR çünkü OP sadece belirli depolar için istediklerini özel olarak talep etmiştir.
Kannan Ekanath

9
Not: --globalBir repo henüz teslim alınmadığında seçeneğin gerekli olduğu anlaşılıyor (henüz yerel olarak bulunmayan bir repo için seçenekler ayarlanamıyor). Kişi her zaman sonra tekrar açılabilir.
James Wilkins

2
Düzenlemeyi geri aldım, çünkü soru özellikle bunu istemedi, ayrıca güvenlik nedeniyle bunu küresel olarak devre dışı bırakmak kötü bir fikir.
Étienne

2
Yukarıdakiyle aynı nedenlerle düzenlemeyi tekrar geri aldım. Bu soru belirli bir repo hakkında. Tüm depolar için bir cevap istiyorsanız, bu ayrı bir soru olmalıdır.
Calimo

121

Aşağıdaki gibi yapabilirsiniz

Tek bir repo için

git config http.sslVerify false

Tüm repolar için

git config --global http.sslVerify false

7
Bu, tüm depolar için SSL doğrulamasını devre dışı bırakır. Asıl soru, onu tek bir depoda yerel yapmaktı.
Gwynne Raskind

4
Neden dünyada sudo kullanıyorsunuz? yerel depoya ihtiyaç duymaz ve kullanıcı yapılandırması $ HOME'da (sisteminizde ne olursa olsun) sudo'ya ihtiyaç duymaz.
mcepl

@ParthianShot yönetici kullanıcısı değilse bunu sudo ile nasıl kullanabilirler?
Thirumalai murugan

1
@Thirumalaimurugan Şu anda ciddi misin? sudoyalnızca bir şey yapmak için kök gerektiğinde kullanılmalıdır . Yeni yazılım yüklemek, önemli sistem dosyalarını değiştirmek, sürücüleri yeniden biçimlendirmek, ağı yeniden yapılandırmak, hizmetleri yönetmek gibi ... Bu adamın sorusunda, herhangi bir şey yapmak için kök gerektiğine dair hiçbir şey yoktu. Yöneticiyseniz, çoğu zaman sudo olmadan komutlarınızı çoğunu (yapılandırmanızı değiştiren komutlar dahil) çalıştırıyor olmalısınız.
Parthian Shot

1
@HolaSoyEduFelizNavidad, OP "tüm repolar için" dediğinde, OP "bilgisayardaki tüm depolar" değil "bu kullanıcı için tüm depolar" anlamına geliyordu.
vy32

98

Thirumalai'nin söylediği gibi, ama klonlanmış deponun içinde ve olmadan --global. yani,

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

Ne zaman sen için durumlar için iyi bir çözümcould not lock global config file .gitconfig: Permission denied
antongorodezkiy

1
.Gitconfig üzerinde İzin reddedildiyse, sisteminizde ciddi bir şekilde kırılan bir şey vardır. $ HOME ürününüz sizin için kullanılabilir olmalıdır (.gitconfig nerede olmalı, değil mi?).
mcepl

Bu aslında benim sunucum değil. Ama yine de teşekkürler. Ve hata mesajından yolu kaldırdım, aslında o sunucuda git .gitconfig bir yerde erişmeye çalışıyor/var/www/...
antongorodezkiy

Bu yanıtın seçenekler hakkında da bazı harika açıklamaları var. stackoverflow.com/a/11622001
dragon788

2
dışa aktar GIT_SSL_NO_VERIFY = true
ETech

11

Özellikle özyinelemeli klon gerekiyorsa

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

10

Bir Windows makinesindeyseniz ve Git yüklüyse, aşağıdaki adımları deneyebilirsiniz:

  1. Git kurulum klasörüne gidin, örn: C: \ Program Files (x86) \ Git \ etc
  2. Dosyayı düzenleyin: gitconfig
  3. Altında, [http] bölümünde satırı ekleyin: sslVerify = false

    [http]
      sslVerify = false
    

1
bu aynı zamanda, diğer depoları etkilemek istemediğini söylediği yukarıdaki soruyu da karşılamıyor.
bryanmac

ve git komutlarını çalıştıramadığınızda gerçekten çok yardımcı oluyor! (ig bir windows sanal makinesinde sourcetree olması ve src klasörünü yerleşik sorcetree terminalinin tanıyamayacağı bir UNC yoluna yerleştirme!
danrah

1
thx, bu çalıştı, bir şekilde komut satırı düzeltme çalışma değildi.
Mart'ta Nrj

TortoiseGit kullanıcıları için, bağlama özgü bir Ayarlar güncellemesi yaparak ve yalnızca yerel düzenleme seçeneğini seçerek bu bölümü yerel yapılandırma dosyasına düzenleyebilirsiniz
Steve Townsend

5

GIT'yi sunucunuzu doğru şekilde kullanacak şekilde yapılandırmanın kolay bir yolu vardır. Git sunucunuz için belirli bir http bölümü ekleyin ve hangi sertifikaya (Base64 kodlu) güveneceğinizi belirtin:

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

Bu şekilde SSL hatası kalmaz ve kendinden imzalı (genellikle) sertifikayı doğrularsınız. Sizi ortadaki adam saldırılarından koruduğu için bu en iyi yol. SSL doğrulamasını devre dışı bıraktığınızda, bu tür saldırılara karşı savunmasızsınız.

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


5

Birkaç depo barındıran bir git sunucusu için SSL kontrollerini devre dışı bırakmanız gerekiyorsa, şunları çalıştırabilirsiniz:

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

(Hala git <v1.8.5 kullanıyorsanız, çalıştırın git config --global http.https://my.bad.server.sslVerify false)

Komutun sonunda olduğu belgelerden açıklama , .gitconfigiçeriği aşağıdaki gibi gösterin :

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

Depo ne olursa olsun, bu sunucu için yapılan sertifika denetimlerini yoksayar.

Ayrıca bazı açıklama var kod


4

Bu benim için çalışıyor:

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

2

Bu soru devam ediyor ve henüz tatmin edici bir sonuç bulamadım, işte benim için işe yarayan şey (işe yaramayan önceki bir cevaba dayanarak https://stackoverflow.com/a/52706362/1806760 , çalışmıyor):

Sunucum https://gitlab.devkendinden imzalı bir sertifikaya sahip.

İlk çalıştırma git config --system --edit(istemi yükseltilmiş komutundan, değişim --systemiçin --globalsadece kendi kullanıcı için bunu yapmak istiyorsanız), ardından önceki sonra aşağıdaki parçacığını eklemek [http]bölümler:

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

Ardından her şeyi doğru yapıp yapmadığınızı kontrol edin:

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

1

Windows için, global yapılandırma istiyorsanız, çalıştırın

git config --global http.sslVerify false

OP specific reposaçıkça istedi
malat

0

Linux'ta bunu git deposu klasörünün içinde çağırırsanız:

git config http.sslVerify false

Bu katacak sslVerify = falseiçinde [http]bölüm configdosyasında .gitile manuel Bu eklemek istiyorsanız da, çözüm olabilir klasör nano .git/config:

...
[http]
  sslVerify = false
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.