关闭Git的https验证

时间:2012-07-13 00:25:30

标签: git

我正在测试一个托管有自签名Apache证书的内部git存储库。

不幸的是,如果没有像这样的错误

我就无法推动它
  

错误:gnutls_handshake()失败:收到了TLS警告提示。访问https:// url

我已执行以下设置:

<。>在.git / config

[http]
    sslverify = false

在环境变量世界中:

declare -x CURLOPT_SSL_VERIFYHOST="0"
declare -x GIT_CURL_VERBOSE="1"
declare -x GIT_SSL_NO_VERIFY="true"

还有什么可能是我的问题?

4 个答案:

答案 0 :(得分:3)

仅作为具有相同问题的人的参考:很可能由于git使用libcurl-gnutls3版本而发生这种情况&lt; 7.21.7关于旧的Debian和Ubuntu发行版。

库中存在一个错误,至少在通过HTTP代理到达HTTPS网站(您自己的本地代理或远程反向代理或政府的透明代理)时,它会出现异常。问题并未说明作者是否使用了代理,但我强烈怀疑问题可能是相关的,如果不相同的话。见https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559371

修复是升级到支持固定libcurl-gnutls3版本的新发行版,自己重建它,重建git以使用libcurl-openssl(参见https://askubuntu.com/questions/186847/error-gnutls-handshake-falied)或者......避免使用https

答案 1 :(得分:1)

可能是您的apache VirtualHost中的ServerName不正确。它应对应于证书服务器名称。要找出TLS警报的原因,我建议运行wireshark。

答案 2 :(得分:0)

让git改为使用HTTPS:

假设您的自签名证书是:

/etc/ssl/certs/selfsigned.pem

执行以下操作:

openssl x509 -in /etc/ssl/certs/selfsigned.pem -out ~/certs/selfsigned.crt
git config --global http.sslcainfo ~/certs/selfsigned.crt

答案 3 :(得分:0)

我遇到了类似的问题。在apache配置中为virtualhost填充servername后,这很有用。而curl --cacert https..var.git工作,git clone https:.. var.git抛出错误 -

  

克隆到'var'...       错误:gnutls_handshake()失败:收到TLS警告警报。访问https://foo.server/var.git/info/refs时       致命:HTTP请求失败

你应该做的另一件事是,在你做完之后

  

cd / var / www / var(var是文档根目录)

sudo git clone --bare ~foo/var
sudo git update-server-info