本記事はマイクロソフト社員によって公開されております。
こんにちは。Windows Commercial Support Directory Services チームです。
今回は Windows OS で利用される SSL/TLS のプロトコルの有効化と無効化についてご紹介いたします。
2021 年現在、SSL/TLS の暗号化プロトコルとして TLS 1.2 以降のご利用を推奨しており、OS として暗号化プロトコルを無効にする方法について多くのお問い合わせをいただいております。暗号化プロトコルを無効化するためには、以下の公開情報の通り、様々な事前の検討などが必要となりますが、今回はプロトコルの設定に絞ってご案内いたします。
TLS 1.0 の問題の解決、第 2 版
https://docs.microsoft.com/ja-jp/security/engineering/solving-tls1-problem
OS 毎の SSL/TLS プロトコルの既定の設定とサポートの状況について
OS 毎の SSL/TLS プロトコルの対応状況については以下の公開情報でご案内しております。
OS としては、Schannel と呼ばれる認証プロバイダーの設定を利用しており、SSL、DTLS、および SSL プロトコルをサポートしています。
TLS/SSL のプロトコル (Schannel SSP)
https://docs.microsoft.com/ja-jp/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-
※ 各プロトコルは、クライアントとサーバーの役割ごとに設定が可能となっており、Enabled は既定で有効になっていることを示しています。
OS として各プロトコルの有効化と無効化の手順について
各プロトコルの有効化と無効化につきましては、以下のレジストリを設定します。設定後に OS の再起動は不要です。
◆ SSL2.0
・クライアント
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client
・サーバー
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server
◆ SSL3.0
・クライアント
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client
・サーバー
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server
◆ TLS 1.0
・クライアント
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
・サーバー
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
◆ TLS 1.1
・クライアント
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
・サーバー
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
◆ TLS 1.2
・クライアント
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
・サーバー
レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
上記の各レジストリ キー配下それぞれに、以下の値を設定することで有効化 / 無効化の設定ができます。
値: Enabled
値の種類: DWORD
設定値: 0x0 (無効) ← 無効化する場合はこちらを指定
0x1 (有効) ← 有効化する場合はこちらを指定
値: DisabledByDefault
値の種類: DWORD
設定値: 0x0 (既定で有効) ← 有効化する場合はこちらを指定
0x1 (既定で無効) ← 無効化する場合はこちらを指定
Enabled は OS で TLS 1.0/1.1/1.2 を有効/無効にするかを決めるレジストリです。
一方で、DisabledByDefault はアプリケーションが明示的に SSL/TLS のバージョンを指定しない場合に、OS が自動的にそのバージョンの SSL/TLS 通信を行うかどうかを決定します。”DisabledByDefault” を 0 に設定しますと、該当の SSL/TLS のバージョンが “既定で有効” になり、1 に設定しますと “既定で無効” になります。しかしながら、”DisabledByDefault” がいずれの設定の場合でもアプリケーションが明示的に指定した場合には、Enabled の値が 1 で有効であれば指定されたバージョンの SSL/TLS 通信が行われます。
(参考) レジストリをコマンドで設定する方法
上記でご案内しましたレジストリの設定をコマンドで設定する場合は、管理者として以下のコマンドを実行します。
◆ SSL 2.0 を OS として無効にする場合
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
◆ SSL 3.0 を OS として無効にする場合
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
◆ TLS 1.0 を OS として無効にする場合
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
◆ TLS 1.1 を OS として無効にする場合
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
トランスポート層セキュリティ (TLS) のレジストリ設定
https://docs.microsoft.com/ja-jp/windows-server/security/tls/tls-registry-settings
各プロトコルが無効になったことの確認について
レジストリによって各プロトコルを無効化した後に、実際にプロトコルが無効化されていることを確認する方法についてお問い合わせもいただきます。
OS としてコマンドなどで確認できる方法は準備されておりませんので、レジストリが正しく設定されているかをご確認いただければ問題ございません。
更新履歴
2021/12/23 : 本ブログの公開