適用於:2019
訂閱版本
本檔概述在 Microsoft Exchange Server 上正確設定特定 TLS 版本的必要步驟。 它也會詳細說明如何優化 TLS 所使用的加密套件和哈希演算法。 與Microsoft 365 或其他需要特定最低 TLS 標準的系統互動時,不正確的 TLS 設定可能會導致各種問題。
您可以在 傳輸層安全 性通訊協定檔中找到 TLS 通訊協定的詳細資訊。
提示
您可以使用 Exchange HealthChecker 腳本來 檢查 Exchange Server 目前的 TLS 設定。
請仔細閱讀,因為某些步驟只能在特定作系統或 Exchange Server 版本上執行。 每個區段的開頭都會顯示是否支援設定,以及是否已從特定 Exchange Server 版本預先設定,後面接著啟用或停用特定 TLS 通訊協定或功能的步驟。
停用 TLS 版本之前要考慮的事項
請確定每個應用程式都支援仍然啟用的 TLS 版本。 例如 (但不限於) 的考慮:
- 您的域控制器和全域編錄伺服器是否支援 TLS 1.2 或僅限 TLS 1.3 設定?
- 例如,合作夥伴應用程式是否支援僅限 TLS 1.2 或 TLS 1.3 設定?
- 作系統 (OS) 是否支援透過 WinHTTP 的最新 TLS 通訊協定版本 TLS 1.2?
- 您的負載平衡器是否支援使用 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 網頁版 (OWA)
- Exchange 管理員 Center (EAC) 和 Exchange 控制台 (ECP)
- 自動探索
- Exchange Web 服務 (EWS)
- REST (Exchange Server 2016/2019)
- 透過 HTTPS 使用 Exchange 的 PowerShell
- POP 與 IMAP
必要條件
TLS 1.3 支援是在 Windows Server 2022 和 2025 Windows Server 2025 Exchange Server 2019 累積更新 (CU) 15 引進,但 SMTP 通訊協定除外。 此通訊協議的支援將會隨著未來的更新而新增。 Exchange Server 2013 CU19 和 Exchange Server 2016 CU8 引進了 TLS 1.2 支援。 Exchange Server 2019 預設支援 TLS 1.2。
Exchange Server 無法在沒有 Windows Server 的情況下執行,因此請務必安裝最新的作系統更新,以執行穩定且安全的 TLS 實作。
您也必須備妥 CU 所支援的最新版本 .NET Framework 和相關修補程式。
根據您的作系統,請確定下列更新也已就緒 (如果您的伺服器目前位於 Windows 匯報) 上,則應該安裝這些更新:
如果您的作系統已 Windows Server 2012 或 Windows Server 2012 R2,則必須先安裝 KB3161949 和 KB2973337,才能啟用 TLS 1.2。
警告
Windows Server 2012 和 Windows Server 2012 R2 外延支援已於 2023 年 10 月 10 日結束。 這些伺服器不再收到沒有 ESU 的 Windows 安全性 匯報。 強烈建議您儘快移轉至支援的版本!
請務必在套用 TLS 組態之後重新啟動 Exchange Server。 在伺服器重新啟動之後,它會變成作用中狀態。
準備 .NET Framework 從安全通道繼承預設值
下表顯示 Exchange Server/Windows Server 與預設 .NET Framework 信道繼承設定的組合:
Exchange Server | Windows 伺服器 | 支援 | 默認設定 |
---|---|---|---|
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 安全通道 (通道 DisabledByDefault
) 登錄值繼承其預設值。 如果未定義值,其行為就像值設定為 0
一樣。
) 登錄值所 SchUseStrongCrypto
設定的強式密碼編譯 (使用更安全的網路協定 (TLS 1.3、TLS 1.2 和 TLS 1.1) ,並封鎖不安全的通訊協定。
SchUseStrongCrypto
只會影響應用程式中 (連出) 連線的用戶端。 藉由設定 .NET Framework 4.x 從安全通道繼承其值,我們便能夠使用作系統所支援的最新 TLS 版本,包括 TLS 1.2 和 TLS 1.3。
啟用 .NET Framework 4.x 安全通道繼承
從提升許可權的 PowerShell 視窗執行下列命令,以設定 .NET Framework 4.x 安全通道繼承:
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 安全通道繼承
Exchange Server 2013 和更新版本不需要此設定。 不過,建議您將它設定為與 .NET 4.x 設定完全相同,以確保設定一致。
從提升許可權的 PowerShell 視窗執行下列命令,以設定 .NET Framework 3.5 安全通道繼承:
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 伺服器 | 支援 | 默認設定 |
---|---|---|---|
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 伺服器 | 支援 | 默認設定 |
---|---|---|---|
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 伺服器 | 支援 | 默認設定 |
---|---|---|---|
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 伺服器 | 支援 | 默認設定 |
---|---|---|---|
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 strict 模式是一項安全性功能,可確保只有具有必要安全性更新的用戶端可以與伺服器建立 TLS 會話並重新交涉。
下表顯示 Exchange Server/Windows Server 與預設 TLS 重新交涉嚴格模式設定的組合:
Exchange Server | Windows 伺服器 | 支援 | 默認設定 |
---|---|---|---|
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 記錄
Internet Information Services (IIS) 小組已新增功能來 Windows Server 2012 R2 或更新版本,以記錄與加密通訊協定版本和加密相關的自定義欄位。 建議您檢閱部落格以取得 如何啟用這些自定義欄位 的檔,並開始剖析記錄檔,以取得與 HTTP 通訊協定相關的環境中連入連線的相關信息。
這些 IIS 自定義欄位不存在於 R2 之前的 Windows Server 版本 Windows Server 2012。 您的負載平衡器或防火牆記錄檔可能能夠提供這項資訊。 請向您的廠商要求指引,以判斷其記錄檔是否可提供這項資訊。
Microsoft Edge 開發人員工具
當連線到 Outlook 網頁Developer Tools
版 (OWA) 或 Exchange 管理員 Center (ECP) 時,您可以利用 Microsoft Edge 提供的 ,來檢查用來建立安全連線的 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 記錄包含加密通訊協定,以及在兩個系統之間交換電子郵件時所使用的其他加密相關信息。
當伺服器是 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"
在執行 Edge Transport role 的 Exchange 伺服器上搜尋記錄檔的範例,以尋找使用 TLS 1.1 通訊協定建立的連線:
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName+"\*.log") "SP_PROT_TLS1_1"
POP 與 IMAP
沒有任何記錄會公開用於 POP 和 IMAP 用戶端的加密通訊協定版本。 若要擷取這項資訊,您可能需要從伺服器擷取 Netmon 追蹤,或在流量流經進行 HTTPS 橋接的負載平衡器或防火牆時檢查流量。
加密和哈希演算法最佳做法
本節中的步驟可用來使用與 2019 Exchange Server 相同的加密和哈希演算法集合來設定 Exchange Server 2016。 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) 來設定加密套件。 如果這些 Cmdlet 已經透過 GPO Functions
設定,或者路徑下HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002
已有登錄專案存在,您就無法使用 Enable-TlsCipherSuite 或 Disable-TLSCipherSuite Cmdlet 手動進行設定。
首先,停用所有加密套件:
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
設定橢圓曲線喜好設定
建議停用橢圓曲線, curve25519
因為它在 FIPS 模式中無法使用。
如需詳細資訊,請參閱 Windows 10 1607 版和更新版本檔中的 TLS 橢圓曲線。
從提升許可權的 PowerShell 視窗執行下列命令,以設定橢圓曲線喜好設定:
Disable-TlsEccCurve -Name "curve25519"
Enable-TlsEccCurve -Name "NistP384" -Position 0
Enable-TlsEccCurve -Name "NistP256" -Position 1