August 18, 2020

msdeploy error: 無法完成對遠端代理程式 URL - JENKINS

msdeploy error: 無法完成對遠端代理程式 URL - JENKINS

狀況: Jenkins 使用 MSdeploy 執行持續部署時, 發生了以下錯誤訊息.

錯誤: 無法完成對遠端代理程式
URL 'https://webdeploy.com.tw:8172/msdeploy.axd?site=Dragons' 的要求。
錯誤: 基礎連接已關閉: 傳送時發生未預期的錯誤。
錯誤: 無法從傳輸連接讀取資料: 遠端主機已強制關閉一個現存的連線。
錯誤: 遠端主機已強制關閉一個現存的連線。錯誤計數: 1。

原因:

可能原因是遠端伺服器調整了 Windwos Server 上的傳輸層安全性協定(TLS)不批配.
例如遠端伺服器OS層已將 PCT1.0 & SSL2.0 & SSL3.0 & TLS1.0 & TLS1.1 Disable掉.
只允許了 TLS1.2 運行, 所導致 Jenkins 部署失敗.

解決:

啟動支援Windows Server TLS 1.2
新增 Windwos Jenkins Server 上的機碼(被部署端Server無需新增這兩組機碼)

執行 → regedit 加兩筆

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319
→ 新增一筆 DWORD(32-位元)值 → 命名: SchUseStrongCrypto 數值為 1

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319
→ 新增一筆 DWORD(32-位元)值 → 命名: SchUseStrongCrypto 數值為 1

調整後記得重新開機.

參考:

網路達人的文章
http://slashlook.com/archive2019/20190903.html

GIT HUB download EnableTLSv12ForWebDeploy.reg
(下載後click執行套用改機碼)
https://gist.github.com/fstueber/d18491f372775708fca3ad8ade9bd4b5