SSL证书问题:证书链中的自签名证书


0

在防火墙后面,使用chrome,我可以像这样访问github存储库:https//github.com/Squirrel/Squirrel.Windows

Chrome使用我们的证书进行此访问。如果我尝试使用GitExtensions访问相同的URL ,我会收到此错误:

SSL证书问题:证书链中的自签名证书

我可以让GitExtensions使用我们的证书来允许访问吗?

编辑:更多信息:

在我的机器上,我没有看到mysysGit,但我确实看到了mingw / curl,所以我假设Git正在使用它们。在构建证书链时,这些显然不使用Windows信任证书。我得到的错误,S SL证书问题:证书链中的自签名证书,表示Git / Github使用的根证书不存在于内置证书颁发机构(CA)根捆绑包中。正如@Akber Choudhry指出的那样,作为Github SSL服务器服务的证书链的根证书的CA证书是 DigiCert High Assurance EV Root CA,我确实在C:\ Program Files(x86)\ Git中看到了CA. \ BIN \卷曲-CA-bundle.crt。

要验证问题是使用Git,而不是GitExtensions,我在命令行上执行了此操作:

 >>git clone https://github.com/Squirrel/Squirrel.Windows.git

并收到相同的SSL证书问题错误。

它给出了Git没有使用此证书的外观,因此我尝试像这样配置Git:

>>git config --system http.sslcainfo "C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt"

但这没有效果..


实际使用什么证书?你在哪个位置连接?你是否100%确定你没有得到MitM'ed?
LvB 2016年

我们没有得到MitM'ed。我不是这里的网络人,但我相信证书是已经购买的证书。当你询问连接的位置时,我不知道你的意思。
Al Lelopath 2016年

首先与网络人员交谈,而不是检查你的TLS服务器设置(你可以使用像[ssllabs.com]这样的工具,并了解HTTP(s)协议实际上是如何工作的。因为你假设了很多,你需要知道东西不承担它们。
LvB 2016年

我建议看看GitKraken。我将它用于我的开发

Answers:


3

在防火墙后面...... github ... Chrome使用我们的证书进行此访问。

基于此描述,我假设“我们的”证书不是Github的原始证书,而是您使用具有SSL检查的防火墙,该证书为连接中间的人生成自己的(“我们的”)证书。发布此证书(代理CA)的防火墙中的CA可能已添加到Windows Trust Store中,此Chrome将信任它。

但是Git不使用Windows Trust Store,因此不知道这个代理CA. 因此,您需要将防火墙使用的代理CA添加到Git的CA存储中,而不是为Github颁发证书的原始CA.


我最终[执行此操作]是:1。制作curl-ca-bundle.crt的副本。2.复制/粘贴DigiCert High Assurance EV Root CA到此副本中。3.将Git指向此副本。
Al Lelopath 2016年

1

当您使用chrome并通过HTTPS访问Github时,您只需在浏览器和Windows中针对内置根证书验证Github的证书链。

在封面下,Gitextensions使用msysgit,在构建证书链时不会查询Windows信任证书。

从错误中可以看出,Github使用的根证书不存在于内置证书颁发机构(CA)根捆绑包中。这可能只是因为Gitextensions捆绑了旧版本的msysgit或curl。

msysgit确实包含DigiCert High Assurance EV Root CA在其CA捆绑包中,并且已经存在了很多年。在文件中搜索此字符串bin/curl-ca-bundle.crt

检查您的计算机上是否安装了旧版本的msysgit或mingw工具。如果是这样,请清理并重新安装。最后,如果需要添加证书,请参阅msysgit证书添加过程。


查看C:\ Program Files(x86)\ Git \ bin \ curl-ca-bundle.crt,我确实看到了CA.
Al Lelopath 2016年

mysysgit过时了吗?它在该页面上说msysGit已被Git for Windows 2.x取代。此外,我不明白特定CA(DigiCert High Assurance EV Root CA)的重要性。你可以解释吗?
Al Lelopath 2016年

1
该CA证书是github SSL服务器提供的证书链的根。如果您的客户端(浏览器或git客户端)已定义了根证书,则它可以验证链中其他证书的来源。我不知道它从哪里拿起CA捆绑包但是尝试擦除它并安装Git for Windows。

你能用“擦掉”来准确定义你的意思吗?我......什么是“它”以及如何将其擦除?
Al Lelopath 2016年

1
这取决于您的系统和路径以及调用curl的位置。我会说任何mingw或msysgit安装应该去。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.