Applies ToWin 10 Ent LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 IoT Core LTSC Windows Server 2019 Windows 10 Enterprise Multi-Session, version 20H2 Windows 10 Enterprise and Education, version 20H2 Windows 10 IoT Enterprise, version 20H2 Windows 10 on Surface Hub Windows 10, version 21H1, all editions Windows 10, version 21H2, all editions

要約

トランスポート層セキュリティ (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 を有効にすることができます。

TLS 1.0 および 1.1 リンクにアクセスするときの Internet Explorer ウィンドウ

図 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 と Internet Explorer の設定)

TLS 1.1 以降は安全と見なされなくなったため、有効にすることはお勧めしません。 POODLE 攻撃など、さまざまな攻撃に対して脆弱です。 そのため、TLS 1.1 を有効にする前に、次のいずれかの操作を行います。

  • 新しいバージョンのアプリケーションが使用可能かどうかを確認します。

  • アプリ開発者に、TLS 1.1 以降への依存関係を削除するようにアプリで構成変更を行うように依頼します。

どのソリューションも機能しない場合は、システム全体の設定でレガシ TLS プロトコルを有効にする 2 つの方法があります。

  • インターネット オプション

  • グループ ポリシー エディター

インターネット オプション

[インターネット オプション] を開くには、タスク バーの検索ボックスに「 インターネット オプション」と 入力します。 図 1 に示すダイアログから [ 設定の変更 ] を選択することもできます。 [ 詳細設定 ] タブで、[ 設定] パネルを下にスクロールします。 そこで、TLS プロトコルを有効または無効にすることができます。

[インターネット オプション] ウィンドウ

図 5: [インターネットのプロパティ] ダイアログ

グループ ポリシー エディター

グループ ポリシー エディターを開くには、タスク バーの検索ボックスに「gpedit.msc」と入力します。 図 6 に示すようなウィンドウが表示されます。 

[グループ ポリシー エディター] ウィンドウ

図 6: グループ ポリシー エディター ウィンドウ

  1. Internet Explorer > Internet コントロール パネル > [詳細] ページ> [暗号化のサポートをオフにする ] > [管理用の Templets] > [ローカル コンピューター ポリシー] >([コンピューターの構成] または [ユーザー構成]) に移動 >します。図 7 を参照してください。

  2. [ 暗号化のサポートを無効にする] をダブルクリックします。

    GPedit.msc での暗号化サポートを無効にするパス

    図 7: グループ ポリシー エディターで暗号化のサポートを無効にするパス

  3. [ 有効] オプションを選択します。 次に、ドロップダウン リストを使用して、図 8 に示すように、有効にする TLS バージョンを選択します。

    さまざまなオプションを表示するドロップダウンで暗号化のサポートを無効にする

    図 8: [暗号化のサポートとドロップダウン リストを無効にする] を有効にする

グループ ポリシー エディターでポリシーを有効にすると、[インターネット オプション] でポリシーを変更することはできません。 たとえば、[ SSL3.0 と TLS 1.0 を使用する] を選択すると、[インターネット オプション] で他のすべてのオプションが使用できなくなります。 図 9 を参照してください。 グループ ポリシー エディターで [暗号化のサポートを無効にする] を有効にした場合、インターネット オプションの設定は変更できません。

SSL と TLS の設定が灰色で表示されたインターネット オプション

図 9: 使用できない SSL と TLS の設定を示すインターネット オプション

TLS バージョン 1.1 以降を有効にする (winhttp 設定)

Windows の WinHTTP で TLS 1.1 と TLS 1.2 を既定のセキュリティで保護されたプロトコルとして有効にする更新プログラムに関するページを参照してください。

重要なレジストリ パス (wininet と Internet Explorer の設定)

  • 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 に設定する必要があります。

重要なレジストリ パス

  1. ForceDefaultSecureProtocols  

    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\winhttp 

    • 既定では FALSE です。 ゼロ以外の値を設定すると、winhttp オプションを使用してアプリケーションがカスタム プロトコルを設定できなくなります。

  2. EnableInsecureTlsFallback 

    • 設定を変更するには: SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\winhttp

    • ポリシーを設定するには: SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings

    • 既定では FALSE です。 ゼロ以外の値を設定すると、セキュリティで保護されたプロトコル (tls1.2 以上) でハンドシェイクが失敗した場合、アプリケーションは安全でないプロトコル (TLS1.0 および 1.1) にフォールバックできます。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。