Https sunucularına bağlanırken “error: gnutls_handshake () başarısız oldu”


62

Herhangi bir HTTPS sunucusuna bağlanmaya çalıştığımda git, aşağıdaki hatayı veriyor:

error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing ...
fatal: HTTP request failed

Belki de ilgili paketlerin gnutls_handshakekırıldığını düşünüyorum. Bu yüzden tekrar yüklemek istiyorum.

Hangi paketler bu hatalarla ilişkili olabilir? Veya bu tür bir hatayı nasıl düzeltirim?


2
Bu diğer soru yardımcı olabilir.
Christopher

1
Benim durumumda, interneti kullanmadan önce giriş yapmamız gereken basit bir kimlik doğrulama sunucusuydu. Önce oraya giriş yapmak zorunda kaldım, sonra da hata kayboldu.
Sahil Singh

Yanıtlar:


93

Sorunun sebebi var, gnutlspaketmiş. Bir vekilin arkasında garip çalışıyor. Ancak opensslzayıf ağda bile iyi çalışıyor. Yani geçici çözüm biz derlemek gerektiğidir gitile openssl. Bunu yapmak için aşağıdaki komutları çalıştırın:

sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev
sudo apt-get build-dep git
mkdir ~/git-openssl
cd ~/git-openssl
apt-get source git
dpkg-source -x git_1.7.9.5-1.dsc
cd git-1.7.9.5

( 1.7.9.5Sisteminizdeki git'in gerçek sürümüyle değiştirmeyi unutmayın .)

Ardından, debian/controldosyayı düzenleyin (komutu çalıştırın gksu gedit debian/control:) ve libcurl4-gnutls-devile tüm örneklerini değiştirin libcurl4-openssl-dev.

Ardından paketi derleyin (eğer testte başarısız olursa, satırı TEST=testdosyadan kaldırabilirsiniz debian/rules):

sudo apt-get install libcurl4-openssl-dev
sudo dpkg-buildpackage -rfakeroot -b

Yeni paketi yükle:

i386: sudo dpkg -i ../git_1.7.9.5-1_i386.deb

x86_64: sudo dpkg -i ../git_1.7.9.5-1_amd64.deb


Buradan ilham alan: https://github.com/xmendez/wfuzz/wiki/PyCurlSSLBug


2
Ubuntu 14.04'e yükselttikten sonra da aynı sorunu yaşadım. Bu çözüm harika çalıştı!
vertti

1
Linux Mint 16 ile çalıştığınızda, "Yazılım Kaynakları" na gitmeniz ve resmi depolardaki kaynakları etkinleştirmeniz gerekir. Ayrıca, derlemeden önce libcurl4-gnutls-dev'i kaldırmalı ve libcurl4-openssl-dev ile değiştirmelisiniz.
Guillaume Perrot

1
Merak etme zihinlerinde yardımcı olabilir. Bir depo indirmek (android kaynak kodu söylemek) için 'repo' kullanıyorsanız ve bağırsak-el sıkışma sorunuyla karşılaşıyorsanız, @ Nyambaa'nın yanıtı işe yarıyor. Repo Git'e bağlı bir betiktir, bu yüzden iyi olmalısın.
Ubuntu'mdaki

2
İnsanların (esas olarak benim) akıl sağlığı için Shellscript. github.com/SonOfLysander/git-openssl-shellscript/blob/master/…
Paul Nelson Baker

4
derleme adımındaki testler gerçekten uzun zaman alıyor. Git sahiplerine güveniyorsanız, TEST = test çizgisini debian / kurallardan kaldırarak atlamak için yukarıdaki talimatları izlemenizi şiddetle tavsiye ederim.
Eli Albert

9

Benim için, SSL sertifikasının kendinden imzalı olması sona erdi. Bunu dene

git config --global http.sslVerify false


9
Bu korkunç bir fikir; korumanızı ortadaki adam saldırılarına karşı koruyarak yapılan her TLS (SSL) bağlantısı için tüm kimlik doğrulamasını devre dışı bırakır . git
Curt J. Sampson
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.