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


当前回答

修复SSL证书的特定错误问题:无法在git中获取本地颁发者证书

我在Let's Encrypt证书时也遇到了同样的问题。

一个网站与https我们只需要:

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

但少不要脸的人说:

fatal: unable to access 'https://example.com/git/demo.git/': SSL certificate problem: unable to get local issuer certificate

要修复它,我们还需要添加:

SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

其他回答

在我的例子中,因为我已经为windows 7安装了ConEmu终端,它在C:\Program Files\Git\mingw64\ssl\certs.的安装过程中创建了ca-bundle

因此,我必须在终端上运行以下命令才能使其工作:

$ git config --global http.sslbackend schannel
$ git config --global http.sslcainfo /mingw64/ssl/certs/ca-bundle.crt

因此,我的C:\Program Files\Git\etc\gitconfig包含以下内容:

[http]
    sslBackend = schannel
    sslCAinfo = /mingw64/ssl/certs/ca-bundle.crt

另外,在安装Git时,我选择了与这里提到的相同的选项。

希望有帮助!

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

Git配置——global http。sslVerify假

我刚刚遇到了同样的问题,但是在windows上使用sourcetree,在windows上使用正常GIT的步骤也是一样的。按照以下步骤,我能够解决这个问题。

Obtain the server certificate tree This can be done using chrome. Navigate to be server address. Click on the padlock icon and view the certificates. Export all of the certificate chain as base64 encoded files (PEM) format. Add the certificates to the trust chain of your GIT trust config file Run "git config --list". find the "http.sslcainfo" configuration this shows where the certificate trust file is located. Copy all the certificates into the trust chain file including the "- -BEGIN- -" and the "- -END- -". Make sure you add the entire certificate Chain to the certificates file

这应该可以解决自签名证书和使用GIT的问题。

我尝试使用“http。”Sslcapath”配置,但这没有工作。此外,如果我没有包括证书文件中的整个链,那么这也会失败。如果有人对这些有指示,请让我知道,因为以上必须重复新的安装。

如果这是系统GIT,那么您可以使用TOOLS ->选项中的选项 GIt选项卡来使用系统GIt,这就解决了源树中的问题。

如果要完全禁用SSL验证,则打开Git Bash并运行该命令。

git config --global http.sslVerify false

注意:此解决方案使您容易受到中间人攻击等攻击。 因此,尽快再次开启验证:

git config --global http.sslVerify true

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