windows - 无法在具有自签名证书的 Windows 上使用 git 解析 "unable to get local issuer certificate"

标签 windows git curl ssl-certificate msysgit

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

SSL Certificate problem: unable to get local issuer certificate.

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

This blog post by Philip Kelley解释说 cURL 不使用客户端机器的证书存储。我按照博文的建议创建了 curl-ca-bundle.crt 的私有(private)副本并配置 Git 以使用它。我确定 Git 正在使用我的副本。如果我重命名副本; Git 提示文件丢失。

我粘贴了我的证书,如博文中所述,我仍然收到消息“无法获取本地颁发者证书”。

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

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

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

最佳答案

问题是默认情况下 git 使用“Linux”加密后端。

从 Git for Windows 2.14 开始,您现在可以将 Git 配置为使用 SChannel,内置的 Windows 网络层作为加密后端。这意味着它将使用 Windows 证书存储机制,您无需显式配置 curl CA 存储机制:https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v=vs.85).aspx

只需执行:

git config --global http.sslbackend schannel

这应该有所帮助。

目前使用 schannel 是为 Windows 安装 git 时的标准设置,如果可能的话,建议不要再通过 SSH check out 存储库,因为 https 更容易配置并且不太可能被防火墙阻止,这意味着机会更少失败。

关于windows - 无法在具有自签名证书的 Windows 上使用 git 解析 "unable to get local issuer certificate",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885449/

相关文章:

python - Unicode 无法正确打印到 cp850 (cp437),打牌套装

c# - 关于 c#.net 应用程序与 MySql 通信的问题

git - 将 ssh 选项传递给 git clone

git - 裸 git repo 的 GUI

php - 如何在php中发送多维数组post数据?

php - 大规模 curl

windows - Kafka 1.0 因 FATAL SHUTDOWN 错误而停止。日志目录失败

.net - 编程式远程应用程序安装

ruby-on-rails - 如何让应用程序使用 Ruby on Rails 的本地分支版本

php - 如何为 get_headers PHP 函数设置用户代理