現象
次のような状況を考えます。
-
Microsoft Forefront 脅威管理ゲートウェイ 2010 で Secure Sockets Layer (SSL) web サイトにアクセスしようとするとします。
-
Web サイトでは、サーバー名を示します (SNI) を使用して、サービスを提供する証明書を決定します。
-
脅威管理ゲートウェイの HTTPS 検査が有効になります。
-
脅威管理ゲートウェイ サーバーは、web、上位プロキシ サーバーに発信方向の web 要求を送信するのにはチェーンを使用します。
-
( KB 2545464) あたりHTTPSiDontUseOldClientProtocolsのベンダー パラメーター セットになっています。
このシナリオでは、web サイトにアクセスすることはできません。
原因
脅威管理ゲートウェイ接続エラーまたは web サーバーのエラーの原因となる不正の SNI ヘッダーを構築するため、この問題が発生します。
解決策
この問題を解決するには、脅威管理ゲートウェイのすべてのアレイ メンバーにこの修正プログラムを適用します。この修正プログラムは既定で有効になっていません。この修正プログラムをインストールした後は、修正プログラムを有効にする手順を従う必要があります。
-
メモ帳などのテキスト エディターに次のスクリプトをコピーし、UseOriginalHostNameInSslContex.vbs として保存します。
'' Copyright (c) Microsoft Corporation. All rights reserved.
' THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE
' RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE
' USER. USE AND REDISTRIBUTION OF THIS CODE, WITH OR WITHOUT MODIFICATION, IS
' HEREBY PERMITTED.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This script forces TMG to use original host name for SSL context when connecting to target server via upstream proxy
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
Const SE_VPS_NAME = "UseOriginalHostNameInSslContex"
Const SE_VPS_VALUE = TRUE
Sub SetValue()
' Create the root object.
Dim root
' The FPCLib.FPC root object
Set root = CreateObject("FPC.Root")
'Declare the other objects that are needed.
Dim array ' An FPCArray object
Dim VendorSets
' An FPCVendorParametersSets collection
Dim VendorSet
' An FPCVendorParametersSet object
Set array = root.GetContainingArray
Set VendorSets = array.VendorParametersSets
On Error Resume Next
Set VendorSet = VendorSets.Item( SE_VPS_GUID )
If Err.Number <> 0 Then
Err.Clear ' Add the item.
Set VendorSet = VendorSets.Add( SE_VPS_GUID )
CheckError
WScript.Echo "New VendorSet added... " & VendorSet.Name
Else
WScript.Echo "Existing VendorSet found... value: " & VendorSet.Value(SE_VPS_NAME)
End If
if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then
Err.Clear
VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE
If Err.Number <> 0 Then
CheckError
Else
VendorSets.Save false, true
CheckError
If Err.Number = 0 Then
WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"
End If
End If
Else
WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"
End If
End Sub
Sub CheckError()
If Err.Number <> 0 Then
WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
Err.Clear
End If
End Sub
SetValue -
脅威管理ゲートウェイのアレイのメンバーに、スクリプト ファイルをコピーし、スクリプトを実行するファイルをダブルクリックします。
既定の動作に戻すには、次の手順に従います。
-
スクリプトの次行を見つけます。
Const SE_VPS_VALUE = true
-
この行を次のように変更します。
Const SE_VPS_VALUE = false
-
脅威管理ゲートウェイのアレイ メンバーのいずれかのスクリプトを再実行します。
修正プログラムの情報
サポートされている修正プログラムは、マイクロソフトのサポートから使用できます。ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。この修正プログラムは、この資料に記載された問題があったシステムのみに対して適用してください。この修正プログラムは、今後さらにテストを行う場合があります。したがって、この問題の影響が深刻でない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことをお勧めします。
修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。このセクションが表示されていない場合は、マイクロソフト カスタマー サービス サポートにお問い合わせのうえ、修正プログラムを入手してください。