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

Posted

技术标签:

【中文标题】Visual Studio 2017 Enterprise + TFS 2018 + Git Clone = 无法获取本地颁发者证书【英文标题】:Visual Studio 2017 Enterprise + TFS 2018 + Git Clone = Unable to get local issuer certificate 【发布时间】:2018-05-19 06:34:30 【问题描述】:

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

服务器部分:

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

TFS 配置为仅通过 HTTPS 运行。 HTTP 被重定向到 HTTPS。 我已经使用 Git 作为版本控制系统设置了一个新项目。

客户端部分:

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

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

我按照guide 配置 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" 命令使用时,我看到列出: 文件:“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 Team Explorer 面板克隆存储库,它会一直说: "Git 因致命错误而失败。 致命:无法访问'https://tfs.blahblah/':SSL 证书问题:无法获取本地颁发者证书

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

但如果我无法与 Visual Studio 2017“配对”,我将无法提交任何内容。

我阅读了几个链接,但无法通过。因此,在将其标记为重复之前,请您注意我的特定系统/环境要求。

注意:请不要建议我关闭 SSL,因为如前所述,它不是企业/企业环境中的解决方案

【问题讨论】:

根据错误,您的SSL设置似乎没有正确配置,您是否有任何其他ssl远程url,例如VSTS,测试一下。 我认为您应该接受***.com/a/54895121/193892 或编辑您自己的答案以包含 SChannel 信息。 VS 2017 和 Azure Devops 本地服务器安装对我来说效果很好。 【参考方案1】:

这是我解决问题的方法:

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

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

【讨论】:

@PauloEduardoJardim 您能否详细说明您是如何在 VS2019 中解决此问题的 此解决方案已解决我在 VS 2019 中的问题。如果有人正在寻找设置名称,它是 Visual Studio 2019 中的“加密网络提供商”。 如果你在 VS 中克隆你的第一个 repo,Git 全局设置是不可访问的。所以我不得不使用为我正确设置的命令提示符。只需在您的 repos 文件夹中打开它,然后使用 git clone https://your/repo.git 克隆您的 repo【参考方案2】:

在获得系统管理员支持两天后,我得到了解决方案。 我把它贴在这里以防它可以帮助别人。 Visual Studio 2017 看起来不接受自签名证书,因为错误状态(“本地颁发者等等”)。它必须是当地的 CA 才能批准。 步骤是:

服务器:

    在 TFS 机器上安装 Company/Trusted CA 作为 Trusted Authority root 为 TFS 准备证书并使其派生自公司/受信任的 CA。 在 TFS 机器中将其安装为 Trusted Authority 根目录 配置 TFS-IIS 绑定以使 TFS 证书对 HTTPS 连接是强制性的

客户:

    在客户端计算机上安装 CA 证书作为 Trusted Authority root(已在 Windows 7 和 10 上尝试过) 在客户端计算机上安装 TFS 证书作为受信任的授权根(您应该会在浏览器中看到锁定并且通过它进行的连接必须被识别为安全) 安装 Git 客户端(我有 Git-2.15.1.2-64 位)。 运行一个 shell(cmd、Powershell、Git-bash 随你喜欢)并输入这个命令:git config --global http.sslCAInfo C:/Users//ca-bundle.crt(因为 Git 和 Visual Studio 有多个他们存储证书的文件夹,您基本上是在为它们创建一个全局路径) 现在您应该能够看到一个新的 .gitconfig 文件,其中包含以下内容:[http] sslCAInfo = C:/Users//ca-bundle.crt 如果您输入命令“git config --list --show-origin”,您应该会看到添加的新路径/配置 将 ca-bundle.crt 从 C:\Program Files\Git\mingw64\ssl\certs 路径复制到 C:/Users// 路径 将 CA 证书作为 Base 64 X.509 (.CER) 导出到您的路径(您可以从 IE Internet Options/Content/Certificates 查看证书)。 使用 Notepad++ 之类的编辑器或您刚刚导出的任何 CA 证书打开它。内容应为:-----BEGIN CERTIFICATE-----publickey-----END CERTIFICATE----- 复制此内容 打开 C:/Users//ca-bundle.crt 并粘贴附加该内容 将 TFS 证书作为 Base 64 X.509 (.CER) 导出到您自己的路径。 用您喜欢的编辑器打开它并复制内容 打开 C:/Users//ca-bundle.crt 并粘贴附加该内容 保存文件

现在您应该可以克隆存储库了。

所以基本上关键是证书必须具有全链授权,并且必须有一个

【讨论】:

【参考方案3】:

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

git config --global http.sslVerify false

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

【讨论】:

我觉得注意文章中的免责声明很重要:"...请注意,全局禁用 SSL 验证可能被视为安全风险,应仅暂时实施。"【参考方案4】:

在浏览器中打开 tfs url 然后点击地址栏中的锁定图标 然后将根证书导出为 Base 64 X.509 (.CER) 然后将根证书附加到此处的证书文件中: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\ssl\certs\ca-bundle.crt"

【讨论】:

【参考方案5】:

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

    转到工具 > 选项 > 源代码管理 > Git 全局设置 将加密网络提供商设置为安全通道。 重新连接项目。转到团队资源管理器 > 管理连接 > 连接到项目。

【讨论】:

谢谢。这对 VS2022 有帮助

以上是关于Visual Studio 2017 Enterprise + TFS 2018 + Git Clone = 无法获取本地颁发者证书的主要内容,如果未能解决你的问题,请参考以下文章

Visual studio 2017怎么注册激活

visual studio 2017没法安装,总在visual studio installer界面闪推

visual studio2017 添加dll库

Visual Studio 2017 中的 Visual Studio 2010

在 Visual Studio 2015 中打开 Visual Studio 2017 项目

visual studio2017社区版如何空格操作?