我们在本地设置了一个新的 TFS 2017 服务器。我的系统管理员设置了 https 并生成了一个自签名证书。使用 Visual Studio 的内置 git 工具一切正常。当我尝试从 CLI 执行任何操作时,出现以下错误:SSL 证书问题:无法获取本地颁发者证书
我尝试过的:
在我的客户端计算机上的受信任的根证书颁发机构存储中安装证书(它也安装在服务器上)。要安装它,我只需双击提供给我的 .pfx 文件,输入密码,然后选择受信任的根存储。
经过一些故障排除后,我将本地证书导出为 Base-64 编码的 x.509 (.CER) 文件,并将其附加到
ca-bundle.crt
仔细检查我的 git 配置以确保 http.sslcainfo 指向正确的 ca-bundle.crt 文件。
使用 openssl 连接到我的服务器。这给了我两条错误信息:
验证错误:num=20:无法获取本地颁发者证书 验证返回:1 depth=0 OU = 由 Team Foundation Server 创建,CN = my.company.com 验证错误:num=21:无法验证第一个证书 验证返回:1 证书链 0 s:/OU=Created by Team Foundation Server/CN=my.company.com i:/OU=Created by Team Foundation Server/CN=my.company.com
尝试使用其他机器的 CLI 通过 https 连接,结果相同。
更新
最佳答案
您的问题似乎与 TFS 无关,但无法验证您的自签名证书。可以查看解决方案here :
解决方法
使用全局选项告诉 git 不执行证书验证:
git config --global http.sslVerify false
决议
以前有几种方法可以解决此问题:
一个。确保将根证书添加到 git.exe 的证书存储中,如讨论的那样 here .
B.通过运行告诉 Git 在哪里可以找到 CA 包:
git config --system http.sslCAPath /absolute/path/to/git/certificates
或者将 CA 包复制到/bin 目录并将以下内容添加到 gitconfig 文件:
sslCAinfo = /bin/curl-ca-bundle.crt
C.正在重新安装 Git。
D.确保存在完整的 CA,包括根证书。
解决SSL问题后,如果命令行出现Authentication问题,可以引用以下案例:
Using Git with TFS 2017 - Works in Visual studio but not Command Line
关于Git 在 Windows 上停止通过 SSL 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41638414/