使用 TortoiseGit 创建 git clone 时出现 SSL 证书问题

Posted

技术标签:

【中文标题】使用 TortoiseGit 创建 git clone 时出现 SSL 证书问题【英文标题】:SSL certificate issue while creating git clone with TortoiseGit 【发布时间】:2013-06-10 22:52:58 【问题描述】:

我想在 TortoiseGit 的帮助下克隆 git 存储库,但出现错误:

错误:SSL 证书问题,验证 CA 证书是否正常。细节: 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:访问https://git.assembla.com/pplconnect-PL.webserver.git/info/refs?service=git-upload-pack 时证书验证失败 致命:HTTP 请求失败

git 没有完全退出(退出代码 128)。

我们将不胜感激任何帮助或指导。

【问题讨论】:

SSL certificate rejected trying to access GitHub over HTTPS behind firewall的可能重复 【参考方案1】:

正确的解决方案很简单;告诉 git 使用 Windows 证书存储。 这由 git version >=2.14 支持(不确定与哪个 Tortoise 版本相关)

遗憾的是,我看不到在 Tortoise GUI 设置中配置它的方法。

程序: 1: 找到 git 的文件夹(对于 Tortoise git 的安装) TortoiseGit -> Settings -> General Git.exe path = (e.g.) C:\Program Files\git\bin

2: 在资源管理器中浏览资源管理器中的此文件夹 Shift右键单击“此处的命令提示符”

3: 输入以下git配置命令

git config --global http.sslBackend schannel

照常在 Windows 证书存储中安装您的自签名证书链。

【讨论】:

【参考方案2】:

尽管出于多种原因认为禁用 ssl 验证很危险,但有时这是可行的。其他人指出至少要使用“本地”禁用,但不是如何做到这一点。作为记录,您可以在全局 .gitconfig 文件(在 Windows 中位于 c:\Users\username 下)中为单个存储库定义使用 openssl 并禁用检查的方法。只需添加以下(调整后的)行:

[http "https://your.repo.com"]
 sslBackend = openssl
 sslVerify = false

对我来说,这很完美。 正如 FRob 的答案中所指出和链接的那样,here is a more nuanced option 使用您经常可以自己下载的 pem 证书,例如在浏览器中“点击”网址前的锁定符号并搜索“附加信息”时(firefox,其他应该类似)。

【讨论】:

【参考方案3】:

所有热门答案都非常危险! 不要全局禁用 SSL 验证!

相反,请使用出色的答案 in another thread 并非常有选择地允许特定站点使用自签名证书。

编辑全局 .gitconfig 文件以包含

[http "https://example.com"]
    sslCAInfo = C:\\Users\\<username>\\Documents\\ssl\\example.com.crt

CRT 文件本身可以通过多种方式获取。您可以使用 Firefox 保存它,将其存储在安全的地方并将您的配置指向它。

【讨论】:

【参考方案4】:

打开 Git CMD 并运行以下命令。

git config --global http.sslVerify false

【讨论】:

禁用 SSL 验证是非常危险的。 SSL 证书验证的全部目的是保护您的代码在通过 HTTPS 传输时不被篡改。禁用它意味着恶意人员可以在您推送和获取代码时将漏洞和其他讨厌的东西插入您的代码中。除非您确定中间人攻击不是您关心的问题,否则不推荐。【参考方案5】:

请检查您的 Git for Windows 安装是否正确。

正如您在屏幕截图中看到的,git.exe 找不到模板目录 - 所以我想 git.exe 也找不到随附的 CA 证书。

如果这没有帮助,请参阅描述 here 以将证书包含到 Git 信任存储中。

【讨论】:

【参考方案6】:

您可以选择忽略服务器证书(风险自负!)。

按以下方式配置您的 TortoiseGit。首先打开 TortoiseGit 设置。

然后:

    选择 Git 配置 按“Edit systemwide gitconfig”打开全局 git 配置 在[http] 部分写:

[http] sslVerify = 假

【讨论】:

禁用 SSL 验证是极其危险的。 SSL 证书验证的全部意义在于保护您的代码在通过 HTTPS 传输时不被篡改。禁用它意味着恶意人员可以在您推送和获取代码时将漏洞和其他讨厌的东西插入您的代码中。除非您确定中间人攻击不是您关心的问题,否则不推荐。 不要全局禁用 ssl 服务器证书验证。最好的方法是添加正确的证书。否则禁用特定存储库。【参考方案7】:

配置 git 以使用正确的根证书。获取服务器的根 CA 证书并将其添加到 git config 中。在命令提示符下运行它(不要忘记 cd 进入你的 git repo)

git config http.sslCAinfo ~/certs/cacert.pem

您可以选择忽略服务器证书(风险自负!)。

git config http.sslVerify false

安全警告:这很容易受到中间人攻击。在您禁用 SSL 证书验证之前,请确保此安全问题对您来说不是问题。

【讨论】:

禁用 SSL 验证是极其危险的。 SSL 证书验证的重点是保护您的代码在传输时不被篡改它通过HTTPS。禁用它意味着恶意人员可以在您推送和获取代码时将漏洞和其他讨厌的东西插入您的代码中。除非您确定中间人攻击不是您的问题,否则不推荐。 这不会禁用 SSL 本身。它忽略验证服务器证书。客户端仍然必须出示证书,这将由服务器验证。所有通信都将使用 SSL 协议。它相当于 curl 中的 -k。但是,我同意 MITM 攻击仍然是可能的。所以这不应该在公共网络中使用。 我建议使用第一个选项并只维护 cacert.pem 文件。就我而言,我的雇主有他们自己的 CA,我将其添加到 cacert.pem 文件中。

以上是关于使用 TortoiseGit 创建 git clone 时出现 SSL 证书问题的主要内容,如果未能解决你的问题,请参考以下文章

git基础教程(40) git图形工具推荐之tortoisegit使用大全

git基础教程(40) git图形工具推荐之tortoisegit使用大全

git for windows+TortoiseGit客户端的使用二

TortoiseGit记住密码

Git TortoiseGit 版本控制总结

git tortoise 创建拉取请求 有啥用