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

33

我想通过TortoiseGit克隆git仓库,但是出现错误:

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

git没有正常退出(退出码128)。

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

截图


7个回答

24

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

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

然后:

  1. 选择Git配置
  2. 按“编辑全局gitconfig”打开全局git配置
  3. [http] 部分写入:

[http]
sslVerify = false


10
禁用SSL验证非常危险。SSL证书验证的整个目的是在您通过HTTPS传输代码时保护代码不被篡改。禁用它意味着恶意人士可以在您推送和提取代码时插入漏洞和其他危险物品。除非您确定中间人攻击对您没有影响,否则不建议禁用SSL验证。 - MrTux
2
不要全局禁用 SSL 服务器证书验证。最好的方法是添加正确的证书。否则,可以针对特定存储库禁用验证。 - JVS

19
正确的解决方案很简单:告诉Git使用Windows证书存储。这适用于git版本>=2.14(不确定对应哪个Tortoise版本)。 通过命令行进行配置:
  1. 找到安装了git(对于Tortoise git)的文件夹 TortoiseGit -> 设置 -> 通用 Git.exe路径 =(例如)C:\Program Files\git\bin
  2. 在资源管理器中浏览到此文件夹,然后按住Shift键右键单击“此处打开命令窗口”
  3. 输入以下git配置命令
    git config --global http.sslBackend schannel
    

或者,从TortoiseGit界面:

  1. Git面板上点击"编辑全局.gitconfig"按钮。
  2. 如果文件中没有[http]部分,请添加该行。
  3. 更新或添加sslBackend = schannel行到[http]部分中,使其看起来像:
    [http]
      sslBackend = schannel
    
    在Windows证书存储中像通常一样安装自签名证书链。


这个很好用。谢谢... - takrl
1
不必通过命令行,可以在TortoiseGit界面上的“Git”面板中找到“编辑全局.gitconfig”的按钮(或系统范围内)。 要么编辑系统范围内的文件并将后端更新为“sslBackend = schannel”,要么编辑全局文件并在全局文件中的“[http]”部分添加该行。 - smsearcy

16

配置 Git 使用正确的根证书。获取服务器的根 CA 证书并将其添加到 Git 配置中。在命令提示符中运行此命令(不要忘记 cd 到您的 Git 存储库)。

git config http.sslCAinfo ~/certs/cacert.pem
你可以选择忽略服务器证书(自担风险!)。
git config http.sslVerify false

安全警告:此处容易受到中间人攻击。在禁用 SSL 认证验证之前,请确保此安全问题不会影响您。


6
禁用SSL验证非常危险。SSL证书验证的整个目的是在通过HTTPS传输代码时保护其免受篡改。禁用它意味着恶意人员可以在您推送和获取代码时插入漏洞和其他不良内容。除非您确定中间人攻击对您没有影响,否则不建议禁用SSL验证。 - user456814
5
这并不是完全禁用SSL。它忽略了验证服务器证书,但客户端仍需要呈现证书并由服务器进行验证。所有通信都将使用SSL协议。这相当于curl中的-k选项。但我同意,仍然可能发生中间人攻击。因此,这不应在公共网络中使用。 - JVS
1
我建议使用第一种选项,只需维护cacert.pem文件即可。在我的情况下,我的雇主有自己的CA,我将其添加到了cacert.pem文件中。 - Gordolio

12

所有的顶级答案都非常危险!不要全局禁用SSL验证!

相反,使用另一个线程中优秀的回答并且非常有选择性地允许具体网站的自签名证书。

编辑全局的.gitconfig文件以包含:

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

CRT文件可以通过多种方式获得。你可以使用Firefox保存它,将它存储在安全的位置并指向配置文件。


4

尽管出于许多原因禁用ssl验证被认为是危险的,但有时仍然可能实现。其他人指出至少要使用“本地”禁用,但没有说明如何做到。以下是如何在全局.gitconfig文件中定义(在Windows下位于c:\Users\username),以便单个存储库使用openssl并禁用检查。只需添加以下(调整后)行:

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

对我而言,这个方法非常有效。 正如FRob的回答中所指出并链接的这个选项更加细致,它使用了pem证书,通常你可以自己下载,例如在浏览器中点击URL前面的锁图标并搜索“附加信息”(火狐浏览器,其他浏览器应该类似)。


2
请确认您的Git for Windows安装是否正确。
如您所见,截图中git.exe无法找到模板目录 - 因此我认为git.exe也无法找到已发行的CA证书。
如果这样做没有帮助,请参考此处的说明,将证书包含到Git信任存储中。

-3
打开Git CMD并运行以下命令。
git config --global http.sslVerify false

6
禁用SSL验证非常危险。SSL证书验证的目的是在通过HTTPS传输代码时保护其免受篡改。禁用它意味着恶意人士可以在您推送和获取代码时插入漏洞和其他不良内容。除非您确定中间人攻击对您没有影响,否则不建议禁用SSL验证。 - MrTux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接