Windows-Server-2008-R2

是否可以將 ARR 配置為在 Server 2008 R2 中進行 TLS 1.2 傳出連接?

  • September 5, 2017

總之,我們需要使用 Application Request Routing 3.0 將向 Web 伺服器發出的 HTTPS 請求安全地反向代理到應用伺服器上的相同 URL,其中兩台伺服器都執行 Windows Server 2008 R2。允許 Web 伺服器支持傳入和傳出 TLS 1.0 和 TLS 1.2 連接,但應用程序伺服器只允許支持傳入連接的 TLS 1.2(允許傳出 TLS 1.0,但可能與此問題無關)。

【瀏覽器】–TLS 1.0/1.2–>【Web伺服器+ARR】–TLS 1.2–>【應用伺服器】

我已經在應用伺服器上配置了 SCHANNEL 系統資料庫設置,如下所示(出於格式化原因,“HKEY_LOCAL_MACHINE”替換為“HKLM”)。Web 伺服器的配置類似,但也啟用了 TLS 1.0 客戶端和伺服器連接。更改系統資料庫後重新啟動伺服器。

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
"DisabledByDefault"=dword:00000001

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client]
"DisabledByDefault"=dword:00000001

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]
"Enabled"=dword:00000000

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000000

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

在大多數情況下,SCHANNEL 設置似乎按預期工作,但 ARR 將僅在與應用程序伺服器的 SSL 握手的 Client Hello 中提供 TLS 1.0,正如 Wireshark 和 NetMon 所觀察到的那樣。然後連接被斷開,因為應用程序伺服器無法繼續握手,並且 ARR 向瀏覽器返回 Bad Gateway 錯誤。直接從 Web 伺服器向應用程序伺服器發出瀏覽器 (IE 11) 請求會導致 TLS 1.2 握手成功。

禁用來自 Web 伺服器的 TLS 1.0 客戶端連接會導致 Web 伺服器甚至不發送 Client Hello(並且向瀏覽器返回 Bad Gateway 響應,原因略有不同)。

在應用程序伺服器上啟用 TLS 1.0 伺服器連接會導致 TLS 1.0 握手成功,並且 ARR 按預期代理請求。

我嘗試使用的伺服器已直接從 Windows 更新安裝了所有更新。

使用 IIS 伺服器場或將應用程序伺服器名稱硬編碼到重寫規則中似乎沒有任何區別。

相同的配置在 Windows Server 2012 上執行良好,我能夠在我在 Azure 上創建的 Server 2008 R2 VM 上重現這些症狀。

我真正想知道的是,ARR 和 Windows Server 2008 R2 是否真的可以做到這一點,如果可以,需要哪些額外的配置步驟或更新檔。雖然其他技術的建議可能會有所幫助,但此時我們受到相當不靈活的要求的限制。

這將以允許所有 TLS 版本(或者甚至 SSL,如果您選擇)的方式更改作業系統預設值。我在 ARR Windows 2008 R2 上對此進行了測試。 Windows 輕鬆修復更新檔

是的,這是可能的。

<https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1.1-and-tls-1.2-as-a-default-secure-protocols-in-winhttp-in-windows>

我通過 GPO 將系統資料庫項部署到我的所有 Windows 7 2008 r2

Microsoft IIS/ASP.NET 開發人員支持的上述答案不正確。由於聲譽,我還不能發表評論。

這確實有效。在 ARR 2008 R2 sp1 上確認更新。在 reg key ARR 傳出之前(使用 winhttp)是 TLS 1.0 在 reg key 之後(我使用 A80 啟用 TLS 1.0-1.2) ARR 使用 TLS 1.2 傳出。

引用自:https://serverfault.com/questions/738757