2016-11-16 48 views
1

我已經使用here中列出的說明,將一個TFS內部部署生成代理設置爲服務。我設置了隨附的代理池,權限,構建控制器等。並且圍繞讓代理連接並運行的大部分安裝挑戰進行了工作。我現在是連接並能夠運行一個代理構建:TFS內部部署生成代理 - 無法建立SSL/TLS安全通道的信任關係

enter image description here enter image description here

我的配置看起來是這樣的:

"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是相關的,但不是相同版本的軟件。這個錯誤消息有一百萬個其他引用,但我沒有看到具有相同上下文或配置的單個引用。有沒有人曾經見過這個問題?

+0

服務器管理面板中的TFS服務器的通知Uri是什麼?如果它被設置爲https位置,則在初始連接後,構建代理將在那裏重定向。將自簽名服務器證書添加到Windows中受信任的根證書的存儲應允許生成代理進行身份驗證。 – jessehouwing

+0

是的,你是正確的,它是「https」。關於第二個建議,我認爲你的觀點大致正確,但是這個改變的細節比[看起來更復雜](http://stackoverflow.com/a/8752467/2912011)要好得多。雖然這確實超出了這個問題的範圍。我認爲改變這個「通知URL」可能是其他人最簡單的解決方案。 –

回答

2

Team Foundation Server本身有一個名爲Notification Uri的設置,只要有任何問題詢問它可以在哪裏找到它將使用此Uri發回位置的內容。在你遇到的情況下,構建服務器想要知道各種各樣的東西,下載源代碼,構建過程模板,上傳測試結果等等。當詢問從哪裏獲取這些內容或發送這些內容時,TFS將以該通知做出響應URI。

您的服務器配置爲使用自簽名SSL證書,服務器配置爲通過其通知Uri屬性發回安全位置,因此您的客戶端需要建立信任關係以建立通信。

有三種解決方案:

  1. 安裝TFS服務器的可信證書(你在活動dircetory設置是在的情況下,這可能不是很難,因爲它似乎)。
  2. 將自簽名證書安裝到連接到TFS服務器的每臺Windows計算機的受信任根證書存儲區中
  3. 通過從IIS綁定中刪除證書並重新配置服務器和通知URI來轉換TFS服務器上的SSL。

注意:根據身份驗證的配置方式,禁用SSL可能會在您的安全設置中引入漏洞。如果您的服務器接受基本身份驗證,或者當您升級到TFS2017並激活對個人訪問令牌的支持時,您的身份驗證令牌可以通過電報以明文形式發送。

相關問題