我正在测试一个托管有自签名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"
还有什么可能是我的问题?
答案 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