如何将 Git 配置为信任来自 Windows 证书存储的证书?

Posted

技术标签:

【中文标题】如何将 Git 配置为信任来自 Windows 证书存储的证书?【英文标题】:How do I configure Git to trust certificates from the Windows Certificate Store? 【发布时间】:2013-05-16 03:09:59 【问题描述】:

目前,我的用户目录中的.gitconfig 中有以下条目。

...
[http]
    sslCAInfo=C:\\Users\\julian.lettner\\.ssh\\git-test.pem
...

这设置了与 git 服务器交互时使用的证书(我公司的 git 服务器需要)。

但现在我无法克隆其他存储库(例如 GitHub 上的公共存储库),因为客户端始终使用被其他服务器拒绝的配置证书。

如何规避此认证问题?我可以将 Git 配置为使用 Windows 证书存储进行身份验证吗?

【问题讨论】:

相关:How can I make git accept a self signed certificate? 相关:***.com/questions/17105955/… 您的证书不会被其他服务器拒绝。问题是客户端 (git) 无法验证服务器的证书。 Azure DevOps上的相关问题。 【参考方案1】:

从 Git for Windows 2.14 开始,您现在可以将 Git 配置为使用内置的 Windows 网络层 SChannel。这意味着它将使用 Windows 证书存储机制,您不需要显式配置 curl CA 存储机制。

来自 Git for Windows 2.14 release notes:

现在可以通过将http.sslBackend 配置变量设置为"openssl""schannel" 在安全通道和OpenSSL 之间切换以进行Git 的HTTPS 传输;这也是安装程序现在使用的方法(而不是到处复制libcurl-4.dll 文件)。

您可以在安装 Git for Windows 2.14 期间选择新的 SChannel 机制。您还可以通过运行以下命令更新现有安装以使用 SChannel:

git config --global http.sslBackend schannel

配置完成后,Git 将使用 Windows 证书存储,并且不应该要求(实际上应该忽略)http.sslCAInfo 配置设置。

【讨论】:

看来这应该是正确的方法。但是,我收到此错误:致命:无法访问“...”:schannel:下一个 InitializeSecurityContext 失败:未知错误(0x80092012)-吊销功能无法检查证书的吊销。但这可能是证书本身的问题。 最新版本的 git 2.17.1.2 与 libcurl 捆绑在一起,它仍然会读取 http.sslCAInfo,如果它包含错误,它仍然会引发 ssl 验证问题。详情请见developercommunity.visualstudio.com/content/problem/267483/…。 工作。必须以管理员权限运行它 @FranklinYu Git for Windows 是 git 的一个分支 - 您指向的文档不是 Git for WIndows 的官方文档;您指的是 git 文档本身。您可能会在gitforwindows.org 的 Windows 版 Git 的官方文档中找到这一点(但官方文档中确实可能缺少它)。我很遗憾这令人困惑。 有谁知道是否有办法将此配置扩展到 git for windows 附带的 curl?我希望它能够基于系统 CA 存储扩展信任。【参考方案2】:

用途:

git config  --local ...

指定每个存储库的设置。本地设置存储在.git 目录中。

git 可以存储设置的三个位置概览:

--local:特定于存储库,<repo_dir>/.git/config --global:用户特定,~/.gitconfig --system:系统默认,/etc/gitconfig

更具体的设置会覆盖更通用的设置,即本地覆盖全局和系统。

【讨论】:

真的没有办法让 Git for Windows 接受操作系统中已经配置的受信任的根 CA吗? 我还没有找到让 git 使用根 CA 的方法。您可以使用git config --global http.sslVerify false 设置或GIT_SSL_NO_VERIFY=true 环境变量关闭证书验证

以上是关于如何将 Git 配置为信任来自 Windows 证书存储的证书?的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server登录失败,该登录名来自不受信任的域,不能与Windows`

登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。

区块链通证经济和传统经济的区别,如何实现

Windows 身份验证问题“登录来自不受信任的域,不能用于 Windows 身份验证。”

SQL Server 2008 Windows 身份验证登录错误:登录来自不受信任的域

如何在Visual Studio中配置git