https 서버에 연결할 때“오류 : gnutls_handshake () 실패”


62

로 HTTPS 서버에 연결하려고 git하면 다음 오류가 발생합니다.

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

아마도 관련된 일부 패키지 gnutls_handshake가 손상되었을 수 있습니다. 그래서 다시 설치하고 싶습니다.

이 오류와 관련이있는 패키지는 무엇입니까? 아니면 이런 종류의 오류를 어떻게 해결합니까?


2
다른 질문 이 도움 이 될 수 있습니다.
Christopher

1
필자의 경우 인터넷을 사용하기 전에 로그인 해야하는 간단한 인증 서버였습니다. 먼저 거기에 로그인 한 다음 오류가 사라졌습니다.
Sahil Singh

답변:


93

문제의 이유가있어 gnutls패키지였습니다. 프록시 뒤에서 이상하게 작동합니다. 그러나 openssl약한 네트워크에서도 잘 작동합니다. 따라서 해결 방법은로 컴파일해야한다는 것 git입니다 openssl. 이렇게하려면 다음 명령을 실행하십시오.

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.5시스템에서 실제 버전의 git 으로 교체 해야합니다.)

그런 다음 debian/control파일을 편집 하고 (명령 :) 실행하고의 gksu gedit debian/control모든 인스턴스를 libcurl4-gnutls-dev로 바꾸십시오 libcurl4-openssl-dev.

그런 다음 패키지를 빌드하십시오 (테스트가 실패 TEST=test하면 파일 에서 행 을 제거 할 수 있습니다 debian/rules).

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

새 패키지를 설치하십시오.

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


여기에서 영감을 얻었습니다 : https://github.com/xmendez/wfuzz/wiki/PyCurlSSLBug


2
Ubuntu 14.04로 업그레이드 한 후에도 동일한 문제가 발생했습니다. 이 솔루션은 훌륭하게 작동했습니다!
vertti

1
Linux Mint 16을 사용하려면 "소프트웨어 소스"로 이동하여 공식 저장소에서 소스를 활성화해야합니다. 또한 컴파일하기 전에 libcurl4-gnutls-dev를 제거하고 libcurl4-openssl-dev로 바꿔야합니다.
기 illa 페로

1
궁금한 마음을 도울 수 있습니다. 저장소 (예 : 안드로이드 소스 코드)를 다운로드하기 위해 'repo'를 사용하고 gnutls-handshake 문제가 발생하면 @Nyambaa의 대답이 작동합니다. Repo는 Git에 의존하는 스크립트이므로 잘해야합니다. 우분투 14.04 lts에서 마술처럼 일했습니다
KhoPhi

2
사람들 (주로 내 자신의 정신)을위한 셸 스크립트 github.com/SonOfLysander/git-openssl-shellscript/blob/master/…
Paul Nelson Baker

4
빌드 단계의 테스트에는 시간이 오래 걸립니다. git 관리자를 신뢰하는 경우 위의 지침을 따라 debian / rules에서 TEST = test 행을 제거하여 건너 뛰는 것이 좋습니다.
Eli Albert

9

저에게는 SSL 인증서가 자체 서명 된 것으로 끝났습니다. 이것을 시도하십시오

git config --global http.sslVerify false


9
그건 끔찍한 생각입니다. 그것은 불가능 모두 에 대한 인증을 모든 만든 TLS (SSL) 연결 gitman-in-the-middle 공격에서 보호 기능을 제거.
커트 J. 샘슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.