GIT For Windows - 无法接收握手,SSL/TLS 连接失败

GIT For Windows - 无法接收握手,SSL/TLS 连接失败

关于这个问题已经有很多问题被提出,但没有一个有明确的答案。

我在公司网络上的 Visual Studio 2017(v15.8.5)中进行开发,使用 Azure DevOps(以前称为 VSTS)上的 Git 存储库进行代理。

当我尝试对 repo 执行任何操作(推送/拉取/同步等)时,我不断收到错误SSL certificate problem: unable to get local issuer certificate。在 V/Studio 中使用 Team Explorer 或在 CMD(管理员)窗口中使用 Git 命令时都会发生错误。

为了解决这个问题,大多数答案都是在 Got For Windows 中使用 Git Credential Manager For Windows,所以我现在有了 v2.19.1

现在我得到了Failed to receive handshake, SSL/TLS connection failed

如果我断开公司 LAN 的连接并连接到开放的 WiFi(家庭,4G),那么一切都可以正常工作,所以这显然与 Git 和我的公司代理如何相互通信有关。

这是我的全球.gitconfig

[user]
    name = xxxxxxxxx
    email = [email protected]
[http]
    sslcapath = C:/Program Files/Git/usr/ssl/certs
    sslCAInfo = C:/Program Files/Git/usr/ssl/certs/ca-bundle.crt
    sslBackend = schannel

如果我有头发,我会把它拔掉...请有人帮帮我......

答案1

对我来说,解决方案是:

设置http.schannelcheckrevoke=false(需要 git >= 2.19,参见https://stackoverflow.com/a/53090169/3813064

请注意,schannel 使用“本机 Windows 安全通道库”(您的 IT 部门也在其中存储您的公司 SSL 证书)而不是 OpenSSL。因此,据我所知,设置sslCAInfo不会产生任何影响。

相关问题: https://stackoverflow.com/questions/46472724/why-schannel-fails-to-receive-handshake-from-the-server

总体来说:确保http.proxy设置正确。你测试过吗?

尝试在代理后面克隆一些东西,以http.sslVerify=False排除代理有问题。

还要注意,VisualStudio 使用其自己实现的 Git 二进制文件。因此,请先使用命令行进行测试,并确保使用了正确的 git 二进制文件(where gitgit --version

相关内容