TFS On Premise Build Agent - 无法为 SSL/TLS 安全通道建立信任关系

TFS On Premise Build Agent - Could not establish trust relationship for the SSL/TLS secure channel

我已使用列出的说明 here 将一个 TFS 本地构建代理设置为服务。我设置了随附的代理池、权限、构建控制器等。并解决了有关让代理连接和 运行 的大部分设置挑战。我现在有一个已连接并能够 运行 构建的代理:

我的配置看起来像这样:

"settings.json" - "ServerURL": http://tfs.XXXXXXXXX.com:80/tfs

"Listen for Build Agent communication on:" http://XXXXXXXXXXX.com:9191/Build/v5.0/Services

但是当我尝试 运行 使用我新配置的代理池进行任何构建时,当代理日志中的条目时总是失败:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

The Agent failed to start this job. Error: An error occurred while sending the request.

这让我很困惑,因为在我的 TFS 配置中没有任何地方使用 SSL。如果我不使用端口 443 连接到它,它将如何在错误的证书(在本例中为自签名)上失败。当我通过网络浏览器 (firefox) 连接到该位置时,我不会自动重定向到“https”。代理是否以某种方式被重定向?同样,我能够毫无问题(或失败的证书)连接到列出的 URL,但由于某些原因,代理似乎不是。

我不确定我是否是唯一遇到此问题的人。我认为this是相关的,但不是同一个版本的软件。有一百万个其他引用此错误消息,但我没有看到一个具有相同上下文或配置的引用。有人以前见过这个问题吗?

Team Foundation Server 本身有一个名为 Notification Uri 的设置,无论何时询问它在哪里可以找到东西,它都会使用这个 Uri 发回位置。

在你的情况下,构建服务器想要了解各种事情,下载源代码、构建过程模板、上传测试结果等。当询问从哪里获取这些或将它们发送到哪里时,TFS 会做出回应通知 URI。

您的服务器配置为使用自签名 SSL 证书,服务器配置为通过其通知 Uri 属性 发回安全位置,因此您的客户端需要建立信任关系以建立通讯.

一共有三种解法:

  1. 在 TFS 服务器上安装受信任的证书(如果您处于活动目录设置中,这可能并不像看起来那么难)。
  2. 在连接到 TFS 服务器的每台 windows 计算机的受信任根证书库中安装自签名证书
  3. 通过从 IIS 绑定中删除证书并重新配置服务器和通知 URI,在 TFS 服务器上关闭 SSL。

注意: 禁用 SSL 可能会在您的安全设置中引入漏洞,具体取决于身份验证的配置方式。如果您的服务器接受基本身份验证,或者当您升级到 TFS2017 并激活对个人访问令牌的支持时,您的身份验证令牌可能会以明文形式通过网络发送。