Git 在 Windows 上停止通过 SSL 工作

标签 git ssl tfs https

我们在本地设置了一个新的 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 连接,结果相同。

更新

仍然没有运气让它工作,但很好奇自签名证书是用私钥签名的事实是否与我们的问题有任何关系。 Self-Signed certificate is signed with a pk

最佳答案

您的问题似乎与 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/

相关文章:

git tag -l 不显示最新版本

.net - 获取 TFS 中工作项的评论历史记录

tfs - 我有新任务时在TFS中接收电子邮件

tfs - TFS 2010 中缺少 "Requirement"工作项类型

java - RestAssured 调用 https get api 给出错误

ruby-on-rails - 将 SSL 添加到 Heroku 应用程序和 godaddy - Rails

xcode - Xcode 4 中设置的 Git 提交信息在哪里?

git - 如何使用 cloudbuild yaml 排除部署中的文件和目录?

git - 如何让 'git log'默认装饰

node.js - Node HTTPS 请求 SELF_SIGNED_CERT_IN_CHAIN