適用対象:2016
2019
Subscription Edition
このドキュメントでは、Microsoft Exchange Serverで特定の TLS バージョンを正しく構成するために必要な手順について説明します。 また、TLS で使用される暗号スイートとハッシュ アルゴリズムを最適化する方法についても詳しく説明します。 TLS の構成が正しくないと、Microsoft 365 または特定の TLS 標準を必要とする他のシステムとやり取りするときに、さまざまな問題が発生する可能性があります。
TLS プロトコルの詳細については、 トランスポート層セキュリティ プロトコル に関するドキュメントを参照してください。
ヒント
Exchange HealthChecker スクリプトを使用して、Exchange サーバーの現在の TLS 構成をチェックできます。
一部の手順は特定のオペレーティング システムまたはExchange Serverバージョンでのみ実行できるため、注意深くお読みください。 各セクションは、設定がサポートされているかどうかを示すマトリックスで始まり、特定のExchange Serverバージョンから事前に構成されている場合は、特定の TLS プロトコルまたは機能を有効または無効にする手順が続きます。
TLS バージョンを無効にする前に考慮する必要がある事項
すべてのアプリケーションが TLS バージョンをサポートしていることを確認してください。このバージョンは有効のままです。 (ただし、これらに限定されない) などの考慮事項:
- ドメイン コントローラーとグローバル カタログ サーバーでは、TLS 1.2 または TLS 1.3 のみの構成がサポートされていますか?
- パートナー アプリケーションは、TLS 1.2 や TLS 1.3 のみの構成をサポートしていますか?
- オペレーティング システム (OS) は、最新の TLS プロトコル バージョン TLS 1.2 over WinHTTP をサポートしていますか?
- ロード バランサーでは、使用されている TLS 1.2 または TLS 1.3 がサポートされていますか?
- デスクトップ、モバイル、ブラウザーのアプリケーションは TLS 1.2 または TLS 1.3 をサポートしていますか?
- 多機能プリンターなどのデバイスは TLS 1.2 または TLS 1.3 をサポートしていますか?
- Exchange Serverまたは Microsoft 356 と統合するサード パーティ製またはカスタムの社内アプリケーションは、強力な TLS 実装をサポートしていますか?
そのため、TLS 1.2 または TLS 1.3 に移行し、以前のセキュリティ プロトコルから離れて行う手順は、運用環境をシミュレートするラボで最初に実行してから、運用環境での展開をゆっくり開始することを強くお勧めします。
次に示すように、特定の TLS バージョンを無効にするために使用する手順は、次のExchange Server機能に適用されます。
- 簡易メール トランスポート プロトコル (SMTP)
- Outlook クライアント接続 (Outlook Anywhere/MAPI/HTTP)
- Exchange Active Sync (EAS)
- Outlook on the Web (OWA)
- Exchange 管理 センター (EAC) と Exchange コントロール パネル (ECP)
- 自動検出
- Exchange Web サービス (EWS)
- REST (Exchange Server 2016/2019)
- HTTPS 経由での Exchange による PowerShell の使用
- POP と IMAP
前提条件
TLS 1.3 のサポートは、EXCHANGE SERVER 2019 累積的な更新プログラム (CU) 15 Windows Server 2022 および Windows Server 2025 で導入されました。ただし、SMTP プロトコルは除きます。 このプロトコルのサポートは、今後の更新プログラムと共に追加される予定です。 TLS 1.2 のサポートは、Exchange Server 2013 CU19 と Exchange Server 2016 CU8 で導入されました。 Exchange Server 2019 では、既定で TLS 1.2 がサポートされています。
Exchange Server Windows Serverしないと実行できないため、安定した安全な TLS 実装を実行するには、最新のオペレーティング システム更新プログラムをインストールすることが重要です。
また、最新バージョンの.NET Frameworkと関連するパッチをCUでサポートする必要もあります。
オペレーティング システムに基づいて、次の更新プログラムもインストールされていることを確認します (サーバーが Windows Updatesに最新の場合はインストールする必要があります)。
オペレーティング システムがWindows Server 2012または R2 Windows Server 2012している場合は、TLS 1.2 を有効にする前に、KB3161949とKB2973337をインストールする必要があります。
警告
Windows Server 2012およびWindows Server 2012 R2 延長サポートは、2023 年 10 月 10 日に終了しました。 これらのサーバーは、ESU なしでWindows セキュリティ Updatesを受信しなくなりました。 サポートされているバージョンにできるだけ早く移行することを強くお勧めします。
TLS 構成が適用された後は、必ずExchange Serverを再起動してください。 サーバーの再起動後にアクティブになります。
Schannel から既定値を継承するための.NET Frameworkの準備
次の表は、Exchange Server/Windows Serverの組み合わせと、既定の .NET Framework Schannel 継承構成を示しています。
Exchange Server | Windows Server | サポート | 既定で構成 |
---|---|---|---|
Exchange Server 2019 CU14 以降 | 任意 | はい | はい (新規インストールのみ) |
Exchange Server 2019 CU13 以上 | 任意 | はい | 部分的に (SchUseStrongCrypto 手動で構成する必要があります) |
Exchange Server 2016 | 任意 | はい | いいえ (OS の既定値は使用されます) |
Exchange Server 2013 | 任意 | はい | いいえ (OS の既定値は使用されます) |
SystemDefaultTlsVersions
レジストリ値は、.NET Framework 4.x で使用されるセキュリティ プロトコル バージョンの既定値を定義します。 値が 1
に設定されている場合、.NET Framework 4.x は Windows Secure Channel (Schannel) DisabledByDefault
レジストリ値から既定値を継承します。 値が未定義の場合、値が 0
に設定されているかのように動作します。
強力な暗号化 ( SchUseStrongCrypto
レジストリ値によって構成) では、より安全なネットワーク プロトコル (TLS 1.3、TLS 1.2、TLS 1.1) が使用され、セキュリティで保護されていないプロトコルがブロックされます。
SchUseStrongCrypto
は、アプリケーション内のクライアント (送信) 接続にのみ影響します。 .NET Framework 4.x を構成して Schannel から値を継承することで、TLS 1.2 や TLS 1.3 など、OS でサポートされている最新バージョンの TLS を使用できるようになります。
.NET Framework 4.x Schannel 継承を有効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、.NET Framework 4.x Schannel 継承を構成します。
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
.NET Framework 3.5 Schannel 継承を有効にする
Exchange Server 2013 以降では、この設定は必要ありません。 ただし、一貫性のある構成を確保するために、.NET 4.x 設定と同じように構成することをお勧めします。
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、.NET Framework 3.5 Schannel 継承を構成します。
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
TLS 1.3 を構成する手順
次の表は、TLS 1.3 がサポートされているExchange Server/Windows Serverの組み合わせを示しています。 この表には、既定の構成も示されています。
Exchange Server | Windows Server | サポート | 既定で構成 |
---|---|---|---|
Exchange Server 2019 CU15 | Windows Server 2022/2025 | はい | はい (enabled ) |
Exchange Server 2019 CU15 | Windows Server 2019 | いいえ | 該当なし |
Exchange Server 2019 CU14 以上 | 任意 | いいえ | 該当なし |
Exchange Server 2016 | 任意 | いいえ | 該当なし |
Exchange Server 2013 | 任意 | いいえ | 該当なし |
TLS 1.3 を有効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続で TLS 1.3 を有効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.3" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "Enabled" -Value 1 -Type DWord
RFC 8446 TLS 1.3 に従って、以前のバージョンの TLS と同じ暗号スイート領域が使用されます。 ただし、TLS 1.3 暗号スイートは異なる方法で定義されており、対称暗号のみを指定しており、TLS 1.2 には使用できません。 同様に、TLS 1.2 以降の暗号スイートは TLS 1.3 では使用できません。
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、TLS 1.3 暗号スイートを構成します。
Enable-TlsCipherSuite -Name TLS_AES_256_GCM_SHA384 -Position 0
Enable-TlsCipherSuite -Name TLS_AES_128_GCM_SHA256 -Position 1
TLS 1.3 を無効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に対して TLS 1.3 を明示的に無効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.3" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "Enabled" -Value 0 -Type DWord
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、TLS 1.3 暗号スイートを削除します。
Disable-TlsCipherSuite -Name TLS_AES_256_GCM_SHA384
Disable-TlsCipherSuite -Name TLS_AES_128_GCM_SHA256
TLS 1.2 を構成する手順
次の表は、TLS 1.2 がサポートされているExchange Server/Windows Serverの組み合わせを示しています。 この表には、既定の構成も示されています。
Exchange Server | Windows Server | サポート | 既定で構成 |
---|---|---|---|
Exchange Server 2019 | 任意 | はい | はい (enabled ) |
Exchange Server 2016 | 任意 | はい | 不要 |
Exchange Server 2013 | 任意 | はい | 不要 |
TLS 1.2 を有効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に対して TLS 1.2 を有効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1 -Type DWord
TLS 1.2 を無効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に対して TLS 1.2 を明示的に無効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 0 -Type DWord
TLS 1.1 を構成する手順
次の表は、TLS 1.1 がサポートされているExchange Server/Windows Serverの組み合わせを示しています。 この表には、既定の構成も示されています。
Exchange Server | Windows Server | サポート | 既定で構成 |
---|---|---|---|
Exchange Server 2019 | 任意 | はい | はい (disabled ) |
Exchange Server 2016 | 任意 | はい | 不要 |
Exchange Server 2013 | 任意 | はい | 不要 |
TLS 1.1 を有効にする
注:
Microsoft TLS 1.1 の実装には、既知のセキュリティの脆弱性はありません。 ただし、将来のプロトコル ダウングレード攻撃やその他の TLS の脆弱性の可能性があるため、TLS 1.1 を慎重に計画して無効にすることをお勧めします。 慎重に計画しないと、クライアントが接続を失う可能性があります。
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に対して TLS 1.1 を有効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 1 -Type DWord
TLS 1.1 を無効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に対して TLS 1.1 を明示的に無効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 0 -Type DWord
TLS 1.0 を構成する手順
次の表は、TLS 1.0 がサポートされているExchange Server/Windows Serverの組み合わせを示しています。 この表には、既定の構成も示されています。
Exchange Server | Windows Server | サポート | 既定で構成 |
---|---|---|---|
Exchange Server 2019 | 任意 | はい | はい (disabled ) |
Exchange Server 2016 | 任意 | はい | 不要 |
Exchange Server 2013 | 任意 | はい | 不要 |
TLS 1.0 を有効にする
注:
Microsoft TLS 1.0 実装においては、セキュリティに関する既知の脆弱性はありません。 ただし、将来のプロトコル ダウングレード攻撃やその他の TLS の脆弱性の可能性があるため、TLS 1.0 を慎重に計画して無効にすることをお勧めします。 慎重に計画しないと、クライアントが接続を失う可能性があります。
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に TLS 1.0 を有効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 1 -Type DWord
TLS 1.0 を無効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、クライアントとサーバーの接続に対して TLS 1.0 を明示的に無効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 0 -Type DWord
TLS 再ネゴシエーションの厳格モードを構成する手順
TLS 厳格モードは、必要なセキュリティ更新プログラムを持つクライアントのみがサーバーとの TLS セッションを確立および再ネゴシエーションできるようにするセキュリティ機能です。
次の表は、既定の TLS 再ネゴシエーション厳格モード構成とのExchange Server/Windows Serverの組み合わせを示しています。
Exchange Server | Windows Server | サポート | 既定で構成 |
---|---|---|---|
Exchange Server 2019 | 任意 | はい | はい (enabled ) |
Exchange Server 2016 | 任意 | はい | 不要 |
Exchange Server 2013 | 任意 | いいえ | 該当なし |
TLS 再ネゴシエーションの厳格モードを有効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、再ネゴシエーション厳密モードを有効にします。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 0 -Type DWord
TLS 再ネゴシエーションの厳格モードを無効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、再ネゴシエーションの厳密なモードを明示的に無効にします。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 1 -Type DWord
TLS 1.2 または TLS 1.3 の使用状況を検証する
TLS 1.2 または TLS 1.3 が有効になると、作業が成功し、システムが受信 (サーバー) 接続とアウトバウンド (クライアント) 接続に対して TLS 1.2 または TLS 1.3 をネゴシエートできることを確認すると便利です。 TLS の使用状況を検証するために使用できる方法がいくつかあります。その一部については、次のセクションで説明します。
Exchange Serverで使用される多くのプロトコルは HTTP ベースであるため、Exchange サーバー上の IIS プロセスを走査します。 MAPI/HTTP、Outlook Anywhere、Exchange Web Services、Exchange ActiveSync、REST、OWA & EAC、オフライン アドレス帳のダウンロード、自動検出は、Exchange Serverで使用される HTTP ベースのプロトコルの例です。
IIS ログ記録
インターネット インフォメーション サービス (IIS) チームは、暗号化プロトコルのバージョンと暗号に関連するカスタム フィールドをログに記録するために、R2 以降をWindows Server 2012する機能を追加しました。 これらのカスタム フィールドを有効にし、HTTP ベースのプロトコルに関連する環境内の受信接続に関する情報のログの解析を開始する方法に関するドキュメントについては、ブログを参照することをお勧めします。
これらの IIS ユーザー設定フィールドは、R2 より前Windows ServerバージョンWindows Server 2012存在しません。 ロード バランサーまたはファイアウォール ログでこの情報を提供できる場合があります。 ログにこの情報が提供される可能性があるかどうかを判断するには、ベンダーにガイダンスを依頼してください。
Microsoft Edge 開発者ツール
Microsoft Edge で使用できるDeveloper Tools
を利用して、Outlook on the Web (OWA) または Exchange 管理 Center (ECP) に接続するときに、セキュリティで保護された接続の確立に使用された TLS バージョンをチェックできます。 これを行うには、次の手順を実行します。
Microsoft Edge ブラウザーを開き、OWA または ECP への HTTPS 接続を確立します。
CTRL + SHIFT + I
キーを押してDeveloper Tools
を開きます。右上隅にある
+
記号をクリックします。ドロップダウン メニューの [
Security
] をクリックします。[
Connection - secure connection settings
] セクションで TLS のバージョンを確認します。
メッセージ ヘッダー
Exchange Server 2016 以降のメッセージ ヘッダー データは、送受信ホストがメールを交換したときにネゴシエートされ、使用されるプロトコルを提供します。 メッセージ ヘッダー アナライザーを使用して、各ホップの明確な概要を取得できます。
メッセージ ヘッダーの例には既知の例外があります。 認証された SMTP (SMTP クライアント送信プロトコルとも呼ばれます) を使用してサーバーに接続してクライアントがメッセージを送信する場合、メッセージ ヘッダーの TLS バージョンには、クライアントで使用される正しい TLS バージョンが表示されません。 Microsoft は、今後の更新プログラムでこの情報を追加する可能性を調査しています。
SMTP ログ記録
Exchange Serverの SMTP ログには、2 つのシステム間で電子メールを交換する際に使用される暗号化プロトコルとその他の暗号化関連情報が含まれています。
サーバーが SMTP receiving system
の場合は、使用されている TLS のバージョンに応じて、ログ内の Server value
を検索します。 サーバーが SMTP sending system
の場合は、使用されている TLS のバージョンに応じて、ログ内の Client value
を検索します。
TLS バージョン | サーバー値 | クライアント値 |
---|---|---|
TLS 1.0 | SP_PROT_TLS1_0_SERVER | SP_PROT-TLS1_0_CLIENT |
TLS 1.1 | SP_PROT_TLS1_1_SERVER | SP_PROT-TLS1_1_CLIENT |
TLS 1.2 | SP_PROT_TLS1_2_SERVER | SP_PROT-TLS1_2_CLIENT |
注:
SMTP TLS 1.3 のサポートは、今後の Exchange 2019 CU15 更新プログラムに含まれる予定です。
次の例では、メールボックスの役割を実行する Exchange サーバー上のログ ファイルを検索し、TLS 1.0 プロトコルを使用して行われた接続を検索します。
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName.Replace("Hub","FrontEnd")+"\*.log") "SP_PROT_TLS1_0"
TLS 1.1 プロトコルを使用して行われた接続について、エッジ トランスポート ロールを実行する Exchange サーバー上のログ ファイルを検索する例:
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName+"\*.log") "SP_PROT_TLS1_1"
POP と IMAP
POP クライアントと IMAP クライアントに使用される暗号化プロトコルのバージョンを公開するログは存在しません。 この情報をキャプチャするには、サーバーから Netmon トレースをキャプチャするか、HTTPS ブリッジングが行われているロード バランサーまたはファイアウォールを通過するトラフィックを検査する必要があります。
暗号アルゴリズムとハッシュ アルゴリズムのベスト プラクティス
このセクションの手順を使用して、Exchange Server 2019 と同じ暗号とハッシュ アルゴリズムのセットを使用して 2016 Exchange Server構成できます。 これらの手順は、既に構成済みの暗号とハッシュ アルゴリズムの設定が付属しているため、Exchange Server 2019 では必要ありません。
前提条件として、最初に TLS 1.2 を構成してから、TLS 1.0 と TLS 1.1 を無効にする必要があります。 TLS 1.0 と TLS 1.1 を無効にして、問題のあるクライアントの構成の問題を分離するには、次の設定を個別に適用することを検討してください。
推奨される暗号スイートを有効にする
Windows Server 2012 と Windows Server 2012 R2
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、推奨される暗号スイートを構成します。
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002" -Name "Functions" -PropertyType MultiString -Value "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" -Force
Windows Server 2016
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、推奨される暗号スイートを構成します。
注:
グループ ポリシー オブジェクト (GPO) を使用して暗号スイートを構成できます。
ENABLE-TlsCipherSuite コマンドレットまたは Disable-TLSCipherSuite コマンドレットが GPO を使用して既に構成されている場合、または Functions
レジストリ エントリが既に HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002
パスの下に存在する場合は、手動で構成することはできません。
まず、すべての暗号スイートを無効にします。
foreach ($suite in (Get-TLSCipherSuite).Name) {
if (-not([string]::IsNullOrWhiteSpace($suite))) {
Disable-TlsCipherSuite -Name $suite -ErrorAction SilentlyContinue
}
}
次に、推奨される TLS 1.2 暗号スイートのみを再度有効にします。
$cipherSuites = @('TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256')
$suiteCount = 0
foreach ($suite in $cipherSuites) {
Enable-TlsCipherSuite -Name $suite -Position $suiteCount
$suiteCount++
}
古い暗号とハッシュを無効にする
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、古い暗号とハッシュを明示的に無効にします。
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Hashes" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Ciphers" -ErrorAction SilentlyContinue
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("DES 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("NULL")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 64/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 128/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("Triple DES 168")
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes" -Name "MD5" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5" -Name "Enabled" -Value 0 -Type DWord
楕円曲線の基本設定を構成する
FIPS モードでは使用できないので、 curve25519
楕円曲線を無効にすることをお勧めします。
詳細については、バージョン 1607 以降の TLS 楕円曲線Windows 10参照してください。
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、楕円曲線の基本設定を構成します。
Disable-TlsEccCurve -Name "curve25519"
Enable-TlsEccCurve -Name "NistP384" -Position 0
Enable-TlsEccCurve -Name "NistP256" -Position 1