【Windows】TLS接続の失敗・タイムアウト問題の原因と3つの回避策
これまでの記事で、TLSハンドシェイクの仕組みと、それが失敗するケースについて解説してきました。実は多くのTLS障害は、Microsoftがセキュリティ修正を実施したことがきっかけで発生しています。セキュリティ更新プログラム「CVE-2019-1318」は、TLSおよびSSLに関する脆弱性を修正するために提供されましたが、その結果、TLS接続が断続的に失敗したり、接続に長時間かかってタイムアウトするという現象が発生しました。本記事では、WindowsシステムにおけるTLS障害とタイムアウトの回避策を詳しく紹介します。
この問題でよく発生するエラー
この問題が原因で、以下のようなエラーが頻繁に報告されています。
- 「要求は中止されました:SSL/TLSセキュアチャネルを作成できませんでした(The request was aborted: Could not create SSL/TLS secure channel)」
- エラー 0x8009030f
- システムイベントログにSCHANNELイベント36887(アラートコード20)として記録されるエラー:「リモートエンドポイントから致命的なアラートを受信しました。TLSプロトコルで定義された致命的なアラートコードは20です。」
TLS障害が発生するWindowsのバージョン
この脆弱性は、攻撃者に中間者(man-in-the-middle)攻撃の機会を与える危険なものでした。この脆弱性を修正した更新プログラムこそが、結果的にWindowsシステムにおけるTLS障害やタイムアウトを引き起こすことになりました。
Microsoftによると、この問題は、Extended Master Secret(EMS)拡張機能に対応していないデバイスに対してTLS接続を試みた場合にのみ発生します。接続先が対応済みのバージョンであれば、この問題は起こりません。現時点で影響を受けるWindowsのバージョンは以下の通りです。
- Windows 10 Version 1607
- Windows Server 2016
- Windows 10
- Windows 8.1
- Windows Server 2012 R2
- Windows Server 2012
- Windows 7 Service Pack 1
- Windows Server 2008 R2 Service Pack 1
- Windows Server 2008 Service Pack 2
影響を受けるWindows更新プログラムの一覧
2019年10月8日以降に、対象プラットフォーム向けにリリースされた最新の累積更新プログラム(LCU)または月例ロールアップでは、この問題が発生する可能性があります。
- KB4517389:Windows 10 バージョン1903向けLCU
- KB4519338:Windows 10 バージョン1809およびWindows Server 2019向けLCU
- KB4520008:Windows 10 バージョン1803向けLCU
- KB4520004:Windows 10 バージョン1709向けLCU
- KB4520010:Windows 10 バージョン1703向けLCU
- KB4519998:Windows 10 バージョン1607およびWindows Server 2016向けLCU
- KB4520011:Windows 10 バージョン1507向けLCU
- KB4520005:Windows 8.1およびWindows Server 2012 R2向け月例ロールアップ
- KB4520007:Windows Server 2012向け月例ロールアップ
- KB4519976:Windows 7 SP1およびWindows Server 2008 R2 SP1向け月例ロールアップ
- KB4520002:Windows Server 2008 SP2向け月例ロールアップ
- KB4519990:Windows 8.1およびWindows Server 2012 R2向けセキュリティのみの更新プログラム
- KB4519985:Windows Server 2012およびWindows Embedded 8 Standard向けセキュリティのみの更新プログラム
- KB4520003:Windows 7 SP1およびWindows Server 2008 R2 SP1向けセキュリティのみの更新プログラム
- KB4520009:Windows Server 2008 SP2向けセキュリティのみの更新プログラム
TLS障害・タイムアウトの回避策
Microsoftによると、TLS障害とタイムアウトを解決する方法は次の3つがあります。
- クライアントとサーバーの両方でEMSを有効にする
- TLS_DHE_*暗号スイートを削除する
- Windows 10/Windows ServerでEMSを有効/無効にする
なお、これらの回避策には、特にセキュリティの観点からデメリットが伴う点に注意してください。
1. クライアントとサーバーの両方でEMSを有効にする
前述のとおり、接続元と接続先の双方にEMSが導入されていれば問題は発生しないため、解決策は明快です。2019年10月8日以降にリリースされたシステムではEMSが既定で有効になっていますが、もし無効になっている場合は、「Extended Master Secret(EMS)拡張機能のサポート」を必ず有効にしてください。
また、IT管理者の方は、RFC 7627で定義されているEMS再開(EMS resumption)機能を完全にサポートしていることも併せて確認しましょう。
2. TLS_DHE_*暗号スイートを削除する
OSがEMSに対応していない場合、IT管理者は、TLSクライアントデバイスのOSに設定された暗号スイート一覧から、TLS_DHE_*暗号スイートを削除する必要があります。Schannel暗号スイートの優先順位付けに関する詳細な公式ドキュメントも公開されているので、参考にするとよいでしょう。
ただし、これはあくまで暫定的な対処策です。これらの暗号スイートを無効化することは、中間者攻撃のリスクを高める行為につながる点を十分に理解しておいてください。
3. Windows 10/Windows ServerでEMSを有効/無効にする
何らかのTLS関連のトラブルへの対処などで、コンピューター上のEMSを無効化していた場合は、サーバーとクライアントの両方でレジストリ設定を変更し、再度有効にします。
- レジストリエディターを開く
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel へ移動する
- TLSサーバー側:DisableServerExtendedMasterSecret の値を「0」に設定
- TLSクライアント側:DisableClientExtendedMasterSecret の値を「0」に設定
該当するレジストリ値が存在しない場合は、新規に作成してください。
これらの回避策が、皆さんが直面しているTLSの問題を一時的に解決する助けになれば幸いです。恒久的な修正を含む今後の更新プログラムの公開情報にも注目しておきましょう。
-
Windows PCを高速化!おすすめオーバークロックソフト6選
Windows PCの動作が遅くなり、パフォーマンスが低下していると感じたら、オーバークロックソフトの導入を検討してみましょう。そもそもオーバークロックとは何か、なぜおすすめなのか、この記事で詳しく解説します。 オーバークロックとは、CPUやGPU、RAMなどの特定パーツのクロック速度を、工場出荷時の設定値よりも引き上げて動作させることです。PC全体を買い替えなくても性能を引き出せるのが大きな魅力で、対象は主にCPU・GPU・メモリです。デフォルト設定以上のパフォーマンスを実感できるでしょう。 注意点:オーバークロックには、グラフィック処理の重いソフトが快適に動く、処理速度が向上するといったメ
-
Windows 11でDNSサーバーを変更する方法【設定アプリ・コントロールパネル対応】
Windows 11のPCやノートパソコンでDNS設定を見直すことは、プライバシーを強化したい方にとって重要な作業です。Webページを開くときも、アプリがバックグラウンドでサーバーに接続するときも、DNSを変更しておけばPC上のすべてのインターネット通信を保護できます。この記事では、初心者の方に向けて、Windows 11でDNSサーバーを変更する方法を2つの手順で詳しく解説します。 DNSとは?なぜ変更する必要があるのか? 多くの人にとって、インターネットへの接続はスイッチを入れるように簡単なものになっています。面倒な手順を踏むことなく、数秒でデバイスをネットワークにつなげられるのは、D