AD FS の SSL/TLS プロトコルと暗号スイートを管理する

次のドキュメントでは、Active Directory フェデレーション サービス (AD FS) で使用される特定のTLS / SSLプロトコルと暗号スイートを無効および有効にする方法に関する情報を提供します。

AD FS の TLS/SSL、SChannel、および暗号スイート

トランスポート層セキュリティ (TLS) プロトコルは、暗号化され、セキュリティで保護されたネットワーク通信を提供します。 Secure Sockets Layer (SSL) プロトコルは、TLS と同様に、Web サーバーと 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 を使用して、これらのプロトコルと暗号スイートを有効または無効にします。

Screenshot of the Registry Editor showing the registry keys located in the Protocols folder.

SSL 3.0 を有効または無効にする

SSL 3.0 を有効または無効にするには、次のレジストリ キーとその値を使用します。

SSL 3.0 の有効化

パス 値の名前 値のデータ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server Enabled 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server DisabledByDefault 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client Enabled 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client DisabledByDefault 00000000

SSL 3.0 の無効化

パス 値の名前 値のデータ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server DisabledByDefault 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client DisabledByDefault 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 アプリケーションの強力な認証を有効にする」を参照してください。

TLS1.0 を有効にする

パス 値の名前 値のデータ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server Enabled 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server DisabledByDefault 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client Enabled 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client DisabledByDefault 00000000

TLS 1.0 の無効化

パス 値の名前 値のデータ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server Enabled"=00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server DisabledByDefault 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client DisabledByDefault 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\Server Enabled 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server DisabledByDefault 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client Enabled 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client DisabledByDefault 00000000

TLS 1.1 を無効にする

パス 値の名前 値のデータ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server DisabledByDefault 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client DisabledByDefault 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 を無効にする

Windows Server 2012 以降では、TLS 1.2 が既定で有効になります。 次のレジストリ キーとその値を使用して、TLS 1.2 を無効にできます。

Note

TLS 1.2 を無効にすることはお勧めしません。

パス 値の名前 値のデータ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server DisabledByDefault 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client Enabled 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client DisabledByDefault 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

Screenshot of Registry Editor that highlights the SchUseStrongCrypto key

New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force | Out-Null

追加情報