我在Windows上使用Git。我安装了msysGit包。我的测试存储库在服务器上有一个自签名证书。我可以毫无问题地使用HTTP访问和使用存储库。移动到HTTPS会出现以下错误:

SSL证书问题:无法获得本地颁发者证书。

我在Windows 7客户端机器的受信任根证书颁发机构中安装了自签名证书。我可以在Internet Explorer中浏览到HTTPS存储库URL,而不会出现错误消息。

Philip Kelley的这篇博客文章解释了cURL不使用客户端机器的证书存储。我按照博客文章的建议创建了curl-ca-bundle的私有副本。然后配置Git使用它。我确定Git正在使用我的副本。如果我重命名副本;Git抱怨文件丢失。

我粘贴了我的证书,正如博客文章中提到的,我仍然得到“无法获得本地发行人证书”的消息。

我通过HTTPS克隆GitHub仓库来验证Git仍然在工作。

我看到的唯一不同于博客文章的地方是我的证书是根证书——没有链可以到达它。我的证书最初来自点击IIS8 IIS管理器链接“创建自签名证书”。也许这使得证书在某种程度上与cURL所期望的有所不同。

如何让Git/cURL接受自签名证书?


当前回答

当我试图“克隆”项目时,我得到了这个错误。一个解决办法是只使用网页上的“下载压缩文件”,这对我来说,实现了我想做的事情。

其他回答

在运行composer update/install之前使用此命令:

git config --global http.sslverify false

有一件事让我很困惑,那就是路径的格式(在我的Windows电脑上)。我最初是这样写的:

git config --global http.sslCAInfo C:\certs\cacert.pem

但是失败了,出现了“无法获得本地发行者证书”错误。

最终起作用的是:

git config --global http.sslCAInfo "C:\\certs\\cacert.pem"

我试着跟随,它工作✅

git config --global http.sslVerify false

为了避免完全禁用ssl验证或复制/破解git使用的捆绑的CA证书文件,您可以将主机的证书链导出到一个文件中,并让git使用它:

git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer

如果这不起作用,您可以只对主机禁用ssl验证:

git config --global http.https://the.host.com/.sslVerify false

注意:当ssl验证关闭时,可能受到中间人攻击。

我已经通过在${HOME}/中添加以下条目解决了这个问题。gitconfig文件

(远程“起源”)

代理=

在大多数情况下,当你的机器启用代理时,就会发生这种情况,所以上面提到的条目将解决这个问题。