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

Jul*_*ner 22 windows git ssl-certificate certificate-store

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

...
[http]
    sslCAInfo=C:\\Users\\julian.lettner\\.ssh\\git-test.pem
...
Run Code Online (Sandbox Code Playgroud)

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

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

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

Edw*_*son 73

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

从Git for Windows 2.14 发行说明:

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

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

git config --global http.sslBackend schannel
Run Code Online (Sandbox Code Playgroud)

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

  • 似乎这应该是正确的方式.但是,我收到此错误:致命:无法访问'...':schannel:next InitializeSecurityContext失败:未知错误(0x80092012) - 吊销功能无法检查证书的吊销.但这可能是证书本身的问题. (9认同)
  • 最新版本的git 2.17.1.2与libcurl捆绑在一起,这仍然会读取http.sslCAInfo,如果它包含错误,它仍会引发ssl验证问题.有关更多详细信息,请参阅https://developercommunity.visualstudio.com/content/problem/267483/git-stops-trusting-private-certificates-via-schann-1.html. (4认同)
  • 工作了。必须以管理员权限运行 (3认同)
  • @FranklinYu Git for Windows 是 git 的一个分支 - 您指向的文档不是 Git for WIndows 的官方文档;你指的是 git 文档本身。您可能会在 https://gitforwindows.org/ 上的 Git for Windows 官方文档中找到这一点(但官方文档中可能确实缺少它)。我很遗憾这令人困惑。 (3认同)
  • 有人知道是否有办法将此配置扩展到 git for windows 附带的 curl 吗?我希望它基于系统 CA 存储扩展信任。 (2认同)

And*_*mar 6

用:

git config  --local ...
Run Code Online (Sandbox Code Playgroud)

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

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

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

更具体的覆盖更一般的设置,即本地覆盖全局和系统。

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