无论我的git配置是否指向现有或伪造的证书链文件,我都会收到相同的“不受信任的根权限”错误(SEC_E_UNTRUSTED_ROOT)。
有关详细信息,请检查随附的屏幕截图。
我在
.gitconfig
中使用的设置是用于伪造文件:sslCAInfo = C:/tmp/foobar.crt
,或者用于与OpenSSL兼容的真实文件:
sslCAInfo = C:/tmp/ca-bundle.crt
控制台脚本:
C:\tmp>openssl version
OpenSSL 0.9.8h 28 May 2008
C:\tmp>git --version
git version 2.12.2.windows.2
C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/ca-bundle.crt
C:\tmp>dir
24.04.2017 13:45 10.875 ca-bundle.crt
c:\tmp>openssl s_client -state -connect https://mygithost:443 -CAfile .\ca-bundle.crt
Verify return code: 0 (ok)
C:\tmp git clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
C:\tmp> git -c http.sslverify=false clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
Resoliving deltas: 100%, done.
C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/foobar.crt
C:\tmp\xxx\git pull
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
#1 楼
全新安装后,今天才被它击中,所以这就是我的解决方法:从您的日志中(强调是我的):
致命:无法使用访问...:schannel:下一个InitializeSecurityContext失败:
git被配置为使用schannel(Windows本机实现),但是schannel使用Windows certs捆绑包而不是cainfo捆绑包。 br />
要切换到openssl以使用自定义捆绑文件,请使用以下命令:
git config --system http.sslbackend openssl
现在git将兑现在http.sslcainfo中传递的CA捆绑包。
或者,由于我的错误是密码套件的问题,您可能会对以下链接感兴趣:
https://support.microsoft.com/ zh-cn / help / 3161639
如果您仍然有旧系统(Win2k3)https://support.microsoft.com/zh-cn/help/948963/an-update-is-available-to-为带有Aes-128-cbc的tls-rsa添加支持
#2 楼
我一年前也有类似情况,所以我希望我记得-您应该在crt文件中拥有所有证书链。验证您是否拥有位桶证书和根证书(包括根证书)之间的所有中间证书。
您可以查看将其以pem格式附加的正确格式(我相信这是您的
当我遇到该问题时,我的证书是由Comodo签名的,他们的证书和中间产品不在大多数系统提供的默认ca-bundle中。 >
希望有帮助!
编辑:现在,我注意到伪造的证书也会发生这种情况-尝试检查系统默认的已知证书(每个系统都有这样的证书)。在Windows上,您可以转到Windows证书mmc管理单元。
评论
您的git配置中有错字:tml而不是tmp我发现奇怪的是git不会在fakepath中引发错误。您应该验证其他配置级别(全局,用户和存储库),某处可能存在回退
@Tensibai请提供说明或文档链接,不确定如何将所有内容打印出来。例如git config --global --list不起作用。
Git config --get-all应该显示系统,全局和本地的所有结果配置(无法验证我在通话中,这只是一个猜测,可以将解决方法设置为SSL_CERT_FILE = C:\ tmp \ ca- bundle.crt告诉openssl在哪里找到捆绑软件
C:\ git config --get-all-- =>错误:错误的参数数量