连接到https服务器时出现“error:gnutls_handshake()失败”

当我尝试使用git连接到任何HTTPS服务器时,它会出现以下错误:

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

我想也许有些与gnutls_handshake相关的gnutls_handshake已被打破。 所以,我想重新安装那些。

哪些包可以与这些错误相关? 或者我该如何解决这种错误?

得到问题的原因,它是gnutls包。 它在代理背后很奇怪。 但即使在弱小的网络中, openssl也能正常运行。 所以解决方法是我们应该用openssl编译git 。 为此,请运行以下命令:

 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-openssl-dev替换libcurl4-gnutls-dev所有实例。

然后构建包(如果它在测试时失败,你可以从文件debian/rules删除行TEST=test ):

 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

对我来说,它最终是SSL证书是自签名的。 试一试

git config --global http.sslVerify false