Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Studio 2017企业版&x2B;2018年TFS&x2B;Git Clone=无法获取本地颁发者证书_Git_Tfs_Visual Studio 2017_Ssl Certificate - Fatal编程技术网

Visual Studio 2017企业版&x2B;2018年TFS&x2B;Git Clone=无法获取本地颁发者证书

Visual Studio 2017企业版&x2B;2018年TFS&x2B;Git Clone=无法获取本地颁发者证书,git,tfs,visual-studio-2017,ssl-certificate,Git,Tfs,Visual Studio 2017,Ssl Certificate,我是新接触Git的人,我试图将它与TFS基础设施结合起来,但遇到了SSL身份验证问题。没有Github,就没有VST。TFS在本地,因此在本地安装 服务器部分: 我已在Windows Server 2016上安装了TFS 2018,并创建了一个公司自签名证书,并在该证书上绑定TFS web服务(IIS管理器) TFS配置为仅通过HTTPS运行。HTTP被重定向到HTTPS。 我已经用Git作为版本控制系统设置了一个新项目 客户端部分: 我有两种Windows客户端。Windows 7 SP1和1

我是新接触Git的人,我试图将它与TFS基础设施结合起来,但遇到了SSL身份验证问题。没有Github,就没有VST。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位.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”命令时,我看到如下所示: 文件:“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失败,出现致命错误。 致命:无法访问“”:SSL证书问题:无法获取本地颁发者证书

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

但如果我不能与Visual Studio 2017“配对”,我就不能做出任何承诺

我读了好几个链接,但还是读不懂。因此,在将其标记为复制之前,请注意我的具体系统/环境要求


注意:请不要建议我关闭SSL,因为正如前面所说的,在公司/企业环境中不是一个解决方案

在获得系统管理员支持两天后,我得到了解决方案。 我把它贴在这里,以防对别人有所帮助。 Visual Studio 2017似乎不接受自签名证书,如错误所述(“本地颁发者诸如此类”)。必须由当地CA批准。 步骤是:

服务器:

  • 在TFS计算机上作为受信任的权限根安装公司/受信任的CA
  • 正在为TFS准备证书,并使其从公司/可信CA派生
  • 在TFS计算机中将其作为受信任的权限根安装
  • 配置TFS-IIS绑定,使TFS证书成为HTTPS连接的强制证书
  • 客户端:

  • 在客户端计算机上以受信任的授权根用户身份安装CA证书(使用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”,您应该会看到添加的新路径/config
  • 将ca-bundle.crt从C:\Program Files\Git\mingw64\ssl\certs路径复制到C:/Users//路径
  • 将CA证书作为Base 64 X.509(.CER)导出到您的路径(您可以从IE Internet选项/内容/证书查看证书)
  • 使用记事本++之类的编辑器打开它,或者使用刚刚导出的CA证书打开它。内容应为:
    ——开始证书------公钥------结束证书------
  • 复制此内容
  • 打开C:/Users//ca-bundle.crt并粘贴附加该内容
  • 将TFS证书作为Base 64 X.509(.CER)导出到您的路径
  • 使用您喜欢的编辑器打开它并复制内容
  • 打开C:/Users//ca-bundle.crt并粘贴附加该内容
  • 保存文件
  • 现在您应该可以克隆存储库了


    因此,基本上,关键是证书中必须有全链权限,并且必须有一个

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


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

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

    git config --global http.sslVerify false
    

    参考:

    在浏览器中打开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”

    根据错误