Visual Studio 2017 Enterprise + TFS 2018 + Git Clone =无法获得本地颁发者证书

Dio*_*ndo 14 git tfs ssl-certificate visual-studio-2017

我是新手与Git交互,我正在尝试将其与TFS基础架构相结合,但遇到SSL身份验证问题.没有Github,没有VSTS.TFS是本地安装,因此是本地安装.

服务器部分:

我在Windows Server 2016上安装了TFS 2018,并创建了一个企业自签名证书,并在该证书上绑定了TFS Web服务(IIS管理器).

TFS配置为仅通过HTTPS运行.HTTP被重定向到HTTPS.我用Git设置了一个新的Project作为版本控制系统.

客户部分:

我有两种Windows客户端.Windows 7 SP1和10周年更新,两者都使用Visual Studio 2017 Enterprise.

我安装了证书(作为受信任的根证书颁发机构)并通过浏览器连接我没有任何东西可以查看项目信息.没有浏览器提出任何关于证书真实性的警报.然后,我使用Windows安全通道库安装了Git-2.15.1.2-64-bit.exe.

我按照本指南配置Git客户端,因为我得到了标题致命错误.所以基本上我提取了自签名的内容并附加到ca-bundle.crt文件.他们都是:

  • C:/ Program Files/Git/mingw64/ssl/certs /
  • C:\ users\myname(像指南一样创建为全局的)
  • C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\ssl\certs(这是由Visual Studio 2017安装创建的)

当我使用Powershell"git config --list --show-origin"命令时,我看到列出:file:"C:\ Program Files\Git\mingw64/etc/gifconfig"http.sslcainfo = C:/ Program Files/Git/mingw64/ssl/certs/ca-bundle.crt文件:"C:/users/myname/.gifconfig"http.sslcainfo = C:/users/myname/ca-bundle.crt

如果我尝试从VS2017团队资源管理器面板克隆存储库,它会一直说:" Git因致命错误而失败.致命:无法访问' https://tfs.blahblah/ ':SSL证书问题:无法获得本地颁发者证书 "

但是当我使用Git GUI时,它会回答一个不同的错误: 致命:找不到远程ref HEAD 据我所知,它看起来很合理,因为没有附加提交.

但如果我不能与Visual Studio 2017"配对",我就无法做出任何贡献.

我通读了几个链接,但我无法理解.因此,在将其标记为重复之前,我请您注意我的具体系统/环境要求.

注意:请不要建议我关闭SSL,因为已经说过它不是企业/企业环境中的解决方案

Dio*_*ndo 13

经过两天的系统管理支持,我得到了解决方案.我在这里发布,以防它可以帮助别人.Visual Studio 2017看起来不接受自签名证书,因为错误状态("local issuer blah blah").必须是本地CA才能批准它.步骤是:

服务器:

  1. 在TFS计算机上将公司/可信CA安装为Trusted Authority root
  2. 为TFS准备证书并使其派生自公司/可信CA.
  3. 在TFS计算机中将其安装为Trusted Authority root
  4. 配置TFS-IIS绑定以使TFS证书成为HTTPS连接的必需

客户:

  1. 在客户端计算机上将CA证书安装为Trusted Authority root(在Windows 7和10中尝试过)
  2. 在客户端计算机上将TFS证书安装为Trusted Authority root(您应该在浏览器中看到锁并通过它进行连接必须被识别为安全)
  3. 安装Git客户端(我有Git-2.15.1.2-64位).
  4. 运行一个shell(cmd,Powershell,Git-bash,如你所愿)并数字化这个命令:git config --global http.sslCAInfo C:/Users//ca-bundle.crt(因为Git和Visual Studio有多个文件夹,他们在存储证书,你基本上为它们创建一个全局路径)
  5. 现在您应该能够看到一个包含此内容的新.gitconfig文件:[http] sslCAInfo = C:/Users//ca-bundle.crt
  6. 如果您使用数字命令"git config --list --show-origin",您应该看到添加了新的路径/配置
  7. 将ca-bundle.crt从C:\ Program Files\Git\mingw64\ssl\certs路径复制到C:/ Users //路径
  8. 将CA证书导出为Base 64 X.509(.CER)到您的路径(您可以从IE Internet选项/内容/证书中查看证书).
  9. 使用Notepad ++等编辑器或您刚刚导出的CA证书打开它.内容应该是:-----BEGIN CERTIFICATE-----publickey-----END CERTIFICATE-----
  10. 复制此内容
  11. 打开C:/Users//ca-bundle.crt并粘贴附加内容
  12. 将TFS证书导出为Base 64 X.509(.CER)到您的路径.
  13. 使用您喜欢的编辑器打开它并复制内容
  14. 打开C:/Users//ca-bundle.crt并粘贴附加内容
  15. 保存文件

现在您应该能够克隆存储库.

所以基本上重点是证书必须具有所有链权限,并且必须有一个.


小智 13

在“ Git设置”,“团队资源管理器”中的“全局设置”中,有一个选项可以在OpenSSL和安全通道之间进行选择。

从Visual Studio 2017(版本15.7预览版3)开始,在Git Global设置中使用SChannel解决了我的问题。

  • 此解决方案解决了我在 VS 2019 中的问题。如果有人在查找设置名称,它是 Visual Studio 2019 中的“加密网络提供程序”。 (2认同)

use*_*102 12

您可以通过以下方式快速解决:

git config --global http.sslVerify false
Run Code Online (Sandbox Code Playgroud)

参考:https : //confluence.atlassian.com/bitbucketserverkb/ssl-certificate-problem-unable-to-get-local-issuer-certificate-816521128.html

  • 我觉得重要的是要注意文章中的免责声明:_“...请注意,全局禁用 SSL 验证可能会被视为安全风险,只能暂时实施。”_ (2认同)

Shi*_*war 6

我遇到了同样的问题。以下是我解决该问题的两个步骤:

  1. 转到 Tools > Options > Source Control > Git Global Settings 将加密网络提供程序设置为Secure Channel
  2. 重新连接项目。转到团队资源管理器 > 管理连接 > 连接到项目。