2

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

不幸的是,我无法在没有这样的错误的情况下推动它

错误:gnutls_handshake() 失败:已收到 TLS 警告警报。访问 https://网址时

我进行了以下设置:

在 .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

4 回答 4

3

就像有同样问题的人的参考:这很可能是由于 git 在旧的 Debian 和 Ubuntu 发行版上使用 libcurl-gnutls3 版本 < 7.21.7 造成的。

库中存在一个错误,至少在通过 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- failed ) 或...避免使用 https

于 2014-02-19T11:30:35.113 回答
1

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

于 2013-01-30T08:05:20.473 回答
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
于 2012-07-13T01:38:07.107 回答
0

我遇到了类似的问题。在虚拟主机的 apache 配置中填充服务器名称后,这有效。虽然 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
于 2014-01-28T13:49:42.687 回答