web-dev-qa-db-ja.com

Server 2008 R2でTLS 1.2送信接続を行うようにARRを構成することはできますか?

要約すると、アプリケーション要求ルーティング3.0を使用して、Webサーバーに対して行われたHTTPS要求を、両方のサーバーがWindows Server 2008 R2を実行しているアプリケーションサーバー上の同じURLに安全にリバースプロキシする必要があります。 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サーバーも同様に構成されていますが、TLS1.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は、WiresharkおよびNetMonで観察されたように、アプリケーションサーバーとのSSLハンドシェイクのClient HelloでのみTLS 1.0を提供します。その後、アプリケーションサーバーがハンドシェイクを続行できず、ARRがブラウザにBad Gatewayエラーを返すため、接続が切断されます。ブラウザ(IE 11)要求をWebサーバーからアプリケーションサーバーに直接送信すると、TLS 1.2ハンドシェイクが成功します。

WebサーバーからのTLS 1.0クライアント接続を無効にすると、WebサーバーはClient Helloを送信しなくなります(そして、少し異なる理由で、不正なゲートウェイ応答がブラウザーに返されます)。

アプリケーションサーバーでTLS1.0サーバー接続を有効にすると、TLS 1.0ハンドシェイクが成功し、ARRは期待どおりに要求をプロキシします。

私が使用しようとしているサーバーには、すべての更新プログラムがWindows Updateから直接インストールされています。

IISサーバーファームを使用するか、アプリケーションサーバー名を書き換えルールにハードコーディングしても、違いはないようです。

同じ構成がWindows Server 2012でも正常に機能し、Azureで作成したServer 2008 R2 VMで症状を再現できます。

私が本当に知りたいのは、これがARRとWindows Server 2008 R2で実際に可能かどうか、そして可能であれば、追加の構成手順またはパッチが必要なことです。他のテクノロジーの提案は役立つかもしれませんが、現時点ではかなり柔軟性のない要件に制約されています。

3
G C

これにより、すべてのTLSバージョン(または選択した場合はSSL)を許可するように、OSのデフォルトが変更されます。これをARR Windows 2008 R2でテストしました。 Windows Easy Fix Patch

3

はい、これは可能です。

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を介してすべてのWindows7 2008 r2にレジストリキーを展開しました

Microsoft IIS /ASP.NET開発者サポートからの上記の回答は正しくありません。評判のため、まだコメントできません。

これは機能します。 ARR 2008 R2sp1でアップデートにより確認済み。 regキーの前の送信(winhttpを使用する)ARRはTLS 1.0です。regキーの後(私はTLS 1.0-1.2を有効にするためにA80を使用しました)ARRは送信にTLS 1.2を使用します。

2
mikes-so

[〜#〜] update [〜#〜]この回答が送信されてから、Microsoftはパッチと関連する回避策の手順をリリースしました。詳細については、新しい回答とコメントを参照してください。

答えはノーであることが判明しました、それは不可能です。

Microsoft IIS/ASP.NET開発者サポートからの次の応答は、技術的な詳細を明確にします。

さらに調査したところ、Windows Server 2008 r2とARRを使用すると、WinHTTPを使用してアウトバウンド要求が行われるため、OSのデフォルトプロトコルにバインドされることがわかりました。 (SSL3およびTLS 1.0)簡単な回答-ARRは、WINHTTP_OPTION_SECURE_PROTOCOLSフラグを使用してWINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2値を渡すWinHttpSetOptionをサポートしていません。

WinHttp!Internet_Session_Handle_Objectは、dwSecureProtocols値を%SDXROOT%\ net\winhttp\inc\defaults.hから直接ロードします。WindowsServer2008r2は、SSL3とTLS1.0のみをサポートします。 IISはTLS1.2を使用するように構成できますが、ARRはOSのデフォルトにバインドされており、構成に関係なく、常にSSL3またはTLS1.0のいずれかを使用します。OSのデフォルトが変更されるまで。

2
G C