概要
トランスポート層セキュリティ (TLS) 1.0 および 1.1 は、コンピューター ネットワーク経由で暗号化チャネルを作成するためのセキュリティ プロトコルです。 Microsoft は、Windows XP および Windows Server 2003 以降、サポートしています。 ただし、規制要件は変化しています。 また、TLS 1.0 には新しいセキュリティの弱点があります。 そのため、Microsoft では、TLS 1.0 と 1.1 の依存関係を削除することをお勧めします。 また、可能な場合はオペレーティング システム レベルで TLS 1.0 と 1.1 を無効にすることをお勧めします。 詳細については、「 TLS 1.0 および 1.1 の無効化」を参照してください。 2022 年 9 月 20 日のプレビュー更新プログラムでは、winhttp と wininet に基づくアプリケーションでは、TLS 1.0 と 1.1 が既定で無効になります。 これは継続的な取り組みの一部です。 この記事は、再度有効にするのに役立ちます。 これらの変更は、2022 年 9 月 20 日以降にリリースされた Windows 更新プログラムをインストールした後に反映されます。
ブラウザーで TLS 1.0 および 1.1 リンクにアクセスするときの動作
2022 年 9 月 20 日以降、ブラウザーが TLS 1.0 または 1.1 を使用する Web サイトを開くと、メッセージが表示されます。 図 1 を参照してください。 このメッセージは、サイトが古い TLS プロトコルまたは安全でない TLS プロトコルを使用していることを示します。 これに対処するには、TLS プロトコルを TLS 1.2 以降に更新します。 これが不可能な場合は、「TLS バージョン 1.1 以降の有効化」で説明されているように TLS を有効にすることができます。
図 1: TLS 1.0 および 1.1 Web ページにアクセスするときのブラウザー ウィンドウ
winhttp アプリケーションで TLS 1.0 および 1.1 リンクにアクセスするときの動作
更新後、winhttp に基づくアプリケーションが失敗する可能性があります。 "WinHttpSendRequest 操作の実行中にERROR_WINHTTP_SECURE_FAILURE" というエラー メッセージが表示されます。
winhttp または wininet に基づいてカスタム UI アプリケーションで TLS 1.0 および 1.1 リンクにアクセスするときの動作
アプリケーションが TLS 1.1 以降を使用して接続を作成しようとすると、接続が失敗する可能性があります。 アプリケーションを閉じるか、動作を停止すると、図 2 に示すように[プログラム互換性アシスタント (PCA)] ダイアログが表示されます。
図 2: アプリケーションを閉じた後の [プログラム互換性アシスタント] ダイアログ
PCA ダイアログには、「このプログラムが正しく実行されていない可能性があります」と表示されます。 その下には、次の 2 つのオプションがあります。
- 互換性設定を使用してプログラムを実行する
- このプログラムが正しく実行されました
互換性設定を使用してプログラムを実行する
このオプションを選択すると、アプリケーションが再度開きます。 これで、TLS 1.0 と 1.1 を使用するすべてのリンクが正しく機能します。 それ以降、PCA ダイアログは表示されません。 レジストリ エディターは、次のパスにエントリを追加します。
- をComputer\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Storeします。
- Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。
このオプションを誤って選択した場合は、これらのエントリを削除できます。 削除すると、次回アプリを開くと PCA ダイアログが表示されます。
図 3: 互換性設定を使用して実行する必要があるプログラムの一覧
このプログラムが正しく実行されました
このオプションを選択すると、アプリケーションは正常に閉じます。 次回アプリケーションを再度開くと、PCA ダイアログは表示されません。 システムは、すべての TLS 1.0 および 1.1 コンテンツをブロックします。 レジストリ エディターは、パスComputer\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store に次のエントリを追加します 。 図 4 を参照してください。 このオプションを誤って選択した場合は、このエントリを削除できます。 エントリを削除すると、次回アプリを開くと PCA ダイアログが表示されます。
図 4: アプリが正しく実行されたことを示すレジストリ エディターのエントリ
大事な レガシ TLS プロトコルは、特定のアプリケーションでのみ有効になります。 これは、システム全体の設定で無効になっている場合でも当てはまります。
TLS バージョン 1.1 以降を有効にする (wininet とインターネットのエクスプローラー設定)
TLS 1.1 以降は安全と見なされなくなったため、有効にすることはお勧めしません。 POODLE 攻撃など、さまざまな攻撃に対して脆弱です。 そのため、TLS 1.1 を有効にする前に、次のいずれかの操作を行います。
- 新しいバージョンのアプリケーションが使用可能かどうかを確認します。
- アプリ開発者に、TLS 1.1 以降への依存関係を削除するようにアプリで構成変更を行うように依頼します。
どのソリューションも機能しない場合は、システム全体の設定でレガシ TLS プロトコルを有効にする 2 つの方法があります。
- インターネット オプション
- グループ ポリシー エディター
インターネット オプション
[インターネット オプション] を開くには、タスク バーの検索ボックスに「 インターネット オプション」と 入力します。 図 1 に示すダイアログから [ 設定の変更 ] を選択することもできます。 [ 詳細設定 ] タブで、[ 設定] パネルを下にスクロールします。 そこで、TLS プロトコルを有効または無効にすることができます。
図 5: [インターネットのプロパティ] ダイアログ
グループ ポリシー エディター
グループ ポリシー エディターを開くには、タスク バーの検索ボックスに「gpedit.msc」と入力します。 図 6 に示すようなウィンドウが表示されます。
図 6: グループ ポリシー エディター ウィンドウ
- [ローカル コンピューター ポリシー>(コンピューターの構成またはユーザーの構成)]>[管理者の Templets>]、[Windows コンポーネント>Internet エクスプローラー>Internet コントロール パネル>Advanced Page>[暗号化のサポートを無効にする] に移動します。図 7 を参照してください。
- [ 暗号化のサポートを無効にする] をダブルクリックします。
図 7: グループ ポリシー エディターで暗号化のサポートを無効にするパス - [ 有効] オプションを選択します。 次に、ドロップダウン リストを使用して、図 8 に示すように、有効にする TLS バージョンを選択します。
図 8: [暗号化のサポートとドロップダウン リストを無効にする] を有効にする
グループ ポリシー エディターでポリシーを有効にすると、[インターネット オプション] でポリシーを変更することはできません。 たとえば、[ SSL3.0 と TLS 1.0 を使用する] を選択すると、[インターネット オプション] で他のすべてのオプションが使用できなくなります。 図 9 を参照してください。 グループ ポリシー エディターで [暗号化のサポートを無効にする] を有効にした場合、インターネット オプションの設定は変更できません。
図 9: 使用できない SSL と TLS の設定を示すインターネット オプション
TLS バージョン 1.1 以降を有効にする (winhttp 設定)
更新して TLS 1.1 および TLS 1.2 を Windows の WinHTTP で既定の安全プロトコルとして有効にする を参照します。
重要なレジストリ パス (wininet とインターネットのエクスプローラー設定)
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings
- ここでは、グループ ポリシー エディターを使用する場合、現在有効になっているプロトコルの値を格納する SecureProtocols を見つけることができます。
Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- ここでは、インターネット オプションを使用する場合に現在有効なプロトコルの値を格納する SecureProtocols を見つけることができます。
グループ ポリシー SecureProtocols は、インターネット オプションによって設定されたものよりも優先されます。
安全でない TLS フォールバックの有効化
上記の変更により、TLS 1.0 と TLS 1.1 が有効になります。 ただし、TLS フォールバックは有効になりません。 TLS フォールバックを有効にするには、次のパスのレジストリで EnableInsecureTlsFallback を 1 に設定する必要があります。
- 設定を変更するには: SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\winhttp
- ポリシーを設定するには: SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings
EnableInsecureTlsFallback が存在しない場合は、新しい DWORD エントリを作成し、1 に設定する必要があります。
重要なレジストリ パス
ForceDefaultSecureProtocols
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\winhttp
- 既定では FALSE です。 ゼロ以外の値を設定すると、winhttp オプションを使用してアプリケーションがカスタム プロトコルを設定できなくなります。
EnableInsecureTlsFallback
- 設定を変更するには: SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\winhttp
- ポリシーを設定するには: SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings
- 既定では FALSE です。 ゼロ以外の値を設定すると、セキュリティで保護されたプロトコル (tls1.2 以上) でハンドシェイクが失敗した場合、アプリケーションは安全でないプロトコル (TLS1.0 および 1.1) にフォールバックできます。