zoukankan      html  css  js  c++  java
  • git连接到https服务器时出现“gnutls_handshake() failed”

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

    问题描述

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

    $ git clone https://github.com/xx/x.git
    Cloning into 'xx'...
    fatal: unable to access 'https://github.com/xx/xx.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
    

    之前使用搜索到一些文章,说是代理问题,取消即可:

    # 如果没有配置代理,可使用以下命令 取消代理 :
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    

    可是问题仍然存在。

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

    我认为可能有些与gnutls_handshake相关的软件包已被破坏;开始怀疑SSL有关的部分。

    参考资料:

    傻瓜化解决方法

    关闭SSL自签名,不需要额外的改动:

    git config --global http.sslVerify false
    

    附录:通过重装git解决

    得到问题的原因,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-gnutls-dev实例替换为libcurl4-openssl-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

    如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
    若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
    博客地址:https://www.cnblogs.com/schips/
  • 相关阅读:
    PHP递归方法实现前序、中序、后序遍历二叉树
    php循环方法实现先序、中序、后序遍历二叉树
    Mac charles 抓取https请求,安装证书后还是显示unknown
    PHP工厂模式
    PHP策略模式2
    PHP单例模式
    PHP 面试知识点整理归纳
    十大迷你iPhone天气应用
    来自极客标签10款最新设计素材-系列十三
    帮助快速生成页面固定显示元素的jQuery插件
  • 原文地址:https://www.cnblogs.com/schips/p/connect_https_server_but_failed_with_gnutls_handshake.html
Copyright © 2011-2022 走看看