无法使用自签名证书在Windows上使用git解决“无法获得本地颁发者证书”

我在Windows上使用git。 我安装了msysgit软件包。 我的testing存储库在服务器上有一个自签名的证书。 我可以访问和使用http没有问题的存储库。 转移到https提供错误“SSL证书问题:无法获得本地发行者证书”。

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

这个博客http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exe-s-store。 aspx解释说,curl不使用客户端机器的证书存储。 我遵循博客的build议来创build一个curl-ca-bundle.crt的私人副本,并configurationgit来使用它。 我相信git正在使用我的副本。 如果我重命名副本; git抱怨文件丢失。

我粘贴了我的证书,正如博客文章中提到的,我仍然收到“无法获得本地发行者证书”的消息。

我通过https克隆了一个GitHub仓库,validation了git仍在工作。

我唯一看到的与博客post不同的是,我的证书是根源 – 没有链条可以达到它。 我的证书最初来自于单击“IIS8 IISpipe理器”链接“创build自签名证书”。 也许这使证书在某种程度上与curl所期望的不同。

我怎样才能让git / curl接受自签名证书?

我也有这个问题。 在我的情况下,我试图得到一个post-receive Git钩子来更新服务器上的每个工作副本。 试图按照您链接到的博客中的说明。 没有为我工作,并覆盖每个用户的基础设置似乎也没有工作。

我最终要做的就是禁用Git整体的SSLvalidation(正如文章中提到的那样)。 不是完美的解决scheme,但它会工作,直到我能找出一个更好的。

我编辑了Gitconfiguration文本文件(我最喜欢的结束中立的应用程序,如Notepad ++)位于:

C:\ Program Files(x86)\ Git \ etc \ gitconfig

在[http]块中,我添加了一个选项来禁用sslVerify。 当我完成时看起来像这样:

[http] sslVerify = false sslCAinfo = /bin/curl-ca-bundle.crt 

那就是诀窍。

注:这将禁用SSLvalidation,不build议作为长期解决scheme。

打开Git Bash并运行命令,如果你想完全禁用SSLvalidation。

 git config --global http.sslVerify false 

注意:这个解决scheme可能会让你像中间人攻击一样攻击你。

这个问题的答案使用makecert for Development SSL为我解决了这个问题。

我不知道为什么,但IISpipe理器中简单的“创build自签名证书”链接所创build的证书并不能解决问题。 我在创build和安装自签名CA Root的链接问题中遵循了这种方法; 然后使用它为我的服务器颁发服务器身份validation证书。 我在IIS中安装了他们两个。

这使我的情况与原始问题中引用的博客文章相同。 一旦根证书被复制/粘贴到curl-ca-bundle.crt中,git / curl组合就满足了。

kiddailey我认为是非常接近,但是我不会禁用sslvalidation,而只是提供本地证书:

在Gitconfiguration文件中

 [http] sslCAinfo = /bin/curl-ca-bundle.crt 

或通过命令行:

 git config --global http.sslCAinfo /bin/curl-ca-bundle.crt 

我也遇到了这个问题。 最后通过从这个MSDN博客 更新得到指导得到解决
其实你需要添加证书在git的证书文件curl-ca-bundel.cert驻留在Git \ bin目录中。
脚步

  1. 在浏览器中打开你的github页面,然后点击地址栏中的locking图标。
  2. 在打开的小popup窗口中,导航到“查看证书”链接,它将打开一个popup窗口。
  3. 其中导航到证书选项卡(在我的情况下第三)。 select作为根证书的顶层节点。 然后按下底部的复制证书button并保存文件。
  4. 在文件浏览器中导航Git \ bin目录并在文本编辑器中打开curl-ca-bundle.crt。
  5. 在文本编辑器中打开导出的证书文件(在步骤3中)。
  6. 将导出的证书的所有内容复制到curl-ca-bundle.crt的末尾,并保存。

最后检查状态。 请注意,在编辑之前备份curl-ca-bundle.crt文件以保持安全。

我只是有同样的问题,但在Windows上使用sourcetree同样的步骤在Windows上正常的GIT以及。 按照以下步骤,我能够解决这个问题。

  1. 获取服务器证书树这可以使用chrome完成。 导航到服务器地址。 点击挂锁图标并查看证书。 将所有证书链导出为base64编码文件(PEM)格式。
  2. 将证书添加到您的GIT信任configuration文件的信任链中运行“git config –list”。 find“http.sslcainfo”configuration,这将显示证书信任文件的位置。 将所有证书复制到包含“–BEGIN- – ”和“ – -END- – ”的信任链文件中。
  3. 确保将整个证书链添加到证书文件中

这应该通过自签名证书和使用GIT来解决您的问题。

我尝试使用“http.sslcapath”configuration,但这不起作用。 另外,如果我没有在证书文件中包含整个链,那么这也将失败。 如果有人有指示,请让我知道,因为上述必须重复一个新的安装。

如果这是系统GIT,那么您可以使用TOOLS – > options GIt选项卡中的选项来使用系统GIT,然后在sourcetree中解决这个问题。

为了避免完全禁用sslvalidation或者复制/盗用git使用的捆绑的CA证书文件,可以将主机的证书链导出到一个文件中 ,并让git使用它:

 git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer 

如果这不起作用,您可以禁用主机的sslvalidation:

 git config --global http.https://the.host.com/.sslVerify false 

注意:当sslvalidation被closures时,受到可能的中间人攻击。

  1. 从这个链接下载证书: https //github.com/bagder/ca-bundle
  2. 将它添加到 C:\Program Files\Git\binC:\Program Files\Git\mingw64\bin

然后尝试像这样: git clone https://github.com/heroku/node-js-getting-started.git

我以前有过这个问题,并使用下面的configuration来解决它。

[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate

既然git 2.3.1,你可以在http后面加上https://your.domain来表示下面的证书只是为了它。

github仓库(或任何非自签名证书)的情况下 ,在安装Git-on-windows时select下面,解决了这个问题。

在这里输入图像说明

在运行作曲者更新/安装之前使用此命令:

 git config --global http.sslverify false