次のドキュメントでは、Active Directory フェデレーション サービス (AD FS) で使用される特定の TLS/SSL プロトコルと暗号スイートを無効にして有効にする方法について説明します。
AD FS の TLS/SSL、SChannel、暗号スイート
トランスポート層セキュリティ (TLS) プロトコルは、ネットワーク経由で暗号化されたセキュリティで保護された通信を提供します。 Secure Sockets Layer (SSL) プロトコルは、Web サーバーと TLS に似た Web ブラウザーの間で送信される機密データ交換を暗号化します。 Active Directory フェデレーション サービス (AD FS) は、通信にこれらのプロトコルを使用します。 現在、これらのプロトコルにはいくつかのバージョンが存在します。
セキュリティ チャネル (Schannel) は、SSL、TLS、DTLS インターネット標準認証プロトコルを実装するセキュリティ サポート プロバイダー (SSP) です。 セキュリティ サポート プロバイダー インターフェイス (SSPI) は、認証など、セキュリティ関係の機能を実行するために Windows システムで用いられる API の 1 種です。 SSPI は、Schannel SSP を含む、数種類の SSP に共通のインターフェイスとして機能します。
暗号スイート は、暗号アルゴリズムのセットです。 TLS/SSL プロトコルの Schannel SSP 実装では、暗号スイートのアルゴリズムを使用してキーを作成し、情報を暗号化します。 暗号スイートでは、次のタスクごとに 1 つのアルゴリズムが指定されています。
- キーの交換
- 一括暗号化
- メッセージ認証
AD FS では、Schannel.dll を使用して、セキュリティで保護された通信操作を実行します。 現在、AD FS では、Schannel.dll がサポートするすべてのプロトコルと暗号スイートがサポートされています。
TLS/SSL プロトコルと暗号スイートを管理する
重要
このタスクには、レジストリを変更する手順が含まれます。 ただし、レジストリを誤って変更した場合、重大な問題が発生する可能性があります。 したがって、これらの手順を注意深く守ってください。
SCHANNEL の既定のセキュリティ設定を変更すると、特定のクライアントとサーバー間の通信が中断または防止される可能性があることに注意してください。 これは、セキュリティで保護された通信が必要であり、通信をネゴシエートするプロトコルがない場合に発生します。
これらの変更を適用する場合は、ファーム内のすべての AD FS サーバーに適用する必要があります。 これらの変更を適用した後、再起動が必要です。
今日の時代には、サーバーを強化し、古い暗号スイートまたは脆弱な暗号スイートを削除することが、多くの組織にとって主要な優先事項になりつつあります。 サーバーをテストし、これらのプロトコルとスイートに関する詳細情報を提供するソフトウェア スイートを利用できます。 準拠を維持したり、セキュリティで保護された評価を達成したりするには、脆弱なプロトコルまたは暗号スイートを削除または無効にする必要があります。 このドキュメントの残りの部分では、特定のプロトコルと暗号スイートを有効または無効にする方法に関するガイダンスを提供します。
次のレジストリ キーは、同じ場所にあります: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols. レジストリ エディターまたは PowerShell を使用して、これらのプロトコルと暗号スイートを有効または無効にします。
SSL 3.0 を有効または無効にする
SSL 3.0 を有効または無効にするには、次のレジストリ キーとその値を使用します。
SSL 3.0 を有効にする
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\サーバー | 有効化済み | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\サーバー | デフォルトで無効 | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0 \クライアント | 有効化済み | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0 \クライアント | デフォルトで無効 | 00000000 |
SSL 3.0 を無効にする
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\サーバー | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\サーバー | デフォルトで無効 | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0 \クライアント | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0 \クライアント | デフォルトで無効 | 00000001 |
PowerShell を使用して SSL 3.0 を無効にする
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'SSL 3.0 has been disabled.'
TLS 1.0 を有効または無効にする
TLS 1.0 を有効または無効にするには、次のレジストリ キーとその値を使用します。
重要
TLS 1.0 を無効にすると、WAP から AD FS への信頼が切断されます。 TLS 1.0 を無効にする場合は、アプリケーションに対して強力な認証を有効にする必要があります。 詳細については、「.NET アプリケーションの強力な認証を有効にする」を参照してください。
TLS 1.0 を有効にする
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\サーバー | 有効化済み | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\サーバー | デフォルトで無効 | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0 \クライアント | 有効化済み | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0 \クライアント | デフォルトで無効 | 00000000 |
TLS 1.0 を無効にする
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\サーバー | 有効"=00000000 | |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\サーバー | デフォルトで無効 | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0 \クライアント | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0 \クライアント | デフォルトで無効 | 00000001 |
PowerShell を使用して TLS 1.0 を無効にする
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.0 has been disabled.'
TLS 1.1 を有効または無効にする
TLS 1.1 を有効または無効にするには、次のレジストリ キーとその値を使用します。
TLS 1.1 を有効にする
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\サーバー | 有効化済み | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\サーバー | デフォルトで無効 | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1 \クライアント | 有効化済み | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1 \クライアント | デフォルトで無効 | 00000000 |
TLS 1.1 を無効にする
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\サーバー | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\サーバー | デフォルトで無効 | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1 \クライアント | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1 \クライアント | デフォルトで無効 | 00000001 |
PowerShell を使用して TLS 1.1 を無効にする
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.1 has been disabled.'
TLS 1.2 を無効にする
TLS 1.2 は、Windows Server 2012 以降では既定で有効になっています。 次のレジストリ キーとその値を使用して、TLS 1.2 を無効にすることができます。
注
TLS 1.2 を無効にすることはお勧めしません。
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\サーバー | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\サーバー | デフォルトで無効 | 00000001 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \クライアント | 有効化済み | 00000000 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \クライアント | デフォルトで無効 | 00000001 |
PowerShell を使用して TLS 1.2 を無効にする
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.2 has been disabled.'
ハッシュ、暗号、および暗号スイートを有効または無効にする
レジストリを介したキー サイズ以外の暗号、ハッシュ、 およびキー交換アルゴリズムの制御はサポートされていません。 ハッシュ、暗号、およびキー交換アルゴリズムは 、PowerShell、MDM、または暗号スイートの順序付けを使用して制御されます。
サポートされている暗号スイートの完全な一覧については、 TLS/SSL (Schannel SSP) の暗号スイートに関する記事を参照してください。 この記事では、既定で有効になっているスイートの表と、サポートされているが既定では有効になっていないスイートを示します。 暗号スイートに優先順位を付ける方法については、 Schannel 暗号スイートの優先順位付けを参照してください。
.NET アプリケーションの強力な認証を有効にする
.NET Framework 3.5/4.0/4.5.x アプリケーションでは、SchUseStrongCrypto レジストリ キーを有効にすることで、既定のプロトコルを TLS 1.2 に切り替えることができます。 これらのレジストリ キーにより、.NET アプリケーションで TLS 1.2 が使用されます。
重要
Windows Server 2016 および Windows Server 2012 R2 の AD FS の場合は、.NET Framework 4.0/4.5.x キーを使用する必要があります:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
.NET Framework 3.5 の場合は、次のレジストリ キーを使用します。
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727 | SchUseStrongCrypto | 00000001 |
.NET Framework 4.0/4.5.x の場合は、次のレジストリ キーを使用します。
経路 | バリュー名 | 値のデータ |
---|---|---|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 | SchUseStrongCrypto | 00000001 |
New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force | Out-Null