我在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接受自签名证书?


当前回答

在github存储库(或任何非自签名证书)的情况下,在安装Git-on-windows时选择以下选项,解决了这个问题。

其他回答

这对我很有用。我打开cmd行并运行以下命令。又拉了一下。

Git配置——global http。sslVerify假

在github存储库(或任何非自签名证书)的情况下,在安装Git-on-windows时选择以下选项,解决了这个问题。

在我的例子中,我必须为不同的git存储库使用不同的证书。

遵循以下步骤(如果您拥有存储库的证书,则可以从步骤5中读取)

转到远程存储库的站点。例如:github.com, bitbucket.org, tfs.example… 单击左上方的“锁定”图标,单击“证书”。 转到证书路径选项卡,双击到..根证书 转到详细信息选项卡,并单击复制到文件。 导出/复制证书到任何您想要的地方。例:C: \ certs \ example.cer 在本地存储库文件夹中打开git bash,输入: $ git config http。sslCAInfo“C: \ certs \ example.cer”

现在您可以为每个存储库使用不同的证书。

记住,使用——global参数调用也会改变其他文件夹中git存储库的证书,所以在执行此命令时不应该使用——global参数。

解决了我的问题 Git配置——global http。sslBackend schannel

这可能会帮助一些遇到这种错误的人。如果您正在跨VPN工作,并且它断开连接,您也可以得到此错误。简单的解决方法是重新连接VPN。