共用方式為


Exchange Server TLS 設定最佳做法

本文件說明在 Exchange Server 2013、Exchange Server 2016 和 Exchange Server 2019 上正確設定 (啟用或停用) 特定 TLS 版本的必要步驟。 本文也會說明如何優化 TLS 所使用的加密套件和哈希演算法。 如果 TLS 未正確設定,則在與 Microsoft 365 或其他系統互動時,可能會面臨各種問題,這些系統是以需要特定最低 TLS 標準的方式進行設定。

如果您想要深入瞭解 TLS (和 SSL) 通訊協定,請閱讀 傳輸層安全性通訊協定 一文。

重要事項

請仔細閱讀,因為此處所述的一些步驟只能在特定操作系統或特定 Exchange Server 版本上執行。

在每個區段的開頭都有一個矩陣,顯示是否支援設定,以及是否已從特定的 Exchange Server 版本預先設定。

停用 TLS 版本之前要考慮的事項

提示

您可以使用 Exchange HealthChecker 腳本來 檢查 Exchange Server 目前的 TLS 設定。

請確定每個應用程式都支援仍然啟用的 TLS 版本。 例如 (但不限於) 的考慮:

  • 您的域控制器和全域編錄伺服器是否支援僅限 TLS 1.2 設定?
  • 合作夥伴應用程式是否 (例如,但不限於 SharePoint、Lync、商務用 Skype 等 ) 支援,例如僅限 TLS 1.2 設定?
  • 您是否已使用 Outlook 更新舊版 Windows 7 桌面,以透過 WinHTTP 支援 TLS 1.2
  • 您的負載平衡器是否支援使用 TLS 1.2?
  • 您的桌面、行動裝置和瀏覽器應用程式是否支援 TLS 1.2?
  • 多函式印表機等裝置是否支援 TLS 1.2?
  • 與 Exchange Server 或 Microsoft 356 整合的第三方或自定義內部應用程式是否支持強式 TLS 實作?

因此,強烈建議您採取的任何步驟來轉換至 TLS 1.2,並不要使用舊版安全性通訊協定,先在模擬生產環境的實驗室中執行,再於生產環境中緩時開始推出。

如下所述,用來停用特定 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.2 支援,Exchange Server 2013 CU19 和 Exchange Server 2016 CU8。 Exchange Server 2019 預設支援 TLS 1.2。

Exchange Server 無法在沒有 Windows Server 的情況下執行,因此請務必安裝最新的作業系統更新,以執行穩定且安全的 TLS 實作。

您也必須備妥 CU 所支援的最新版本 .NET Framework 和相關修補程式。

根據您的作業系統,請確定下列更新也已就緒, (如果您的伺服器目前位於 Windows 匯報) 上,則應該安裝這些更新:

如果您的操作系統 Windows Server 2012 或 R2 Windows Server 2012,則必須先安裝 KB3161949KB2973337,才能啟用 TLS 1.2。

警告

Windows Server 2012Windows 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 任何 部分 (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.2 和 TLS 1.1) ,並封鎖不安全的通訊協定。 SchUseStrongCrypto 只會影響應用程式中 (連出) 連線的用戶端。 藉由設定 .NET Framework 4.x 從安全通道繼承其值,我們便能夠使用操作系統所支援的最新 TLS 版本,包括 TLS 1.2。

啟用 .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.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 1.2 並完全停用 TLS 1.0 和 1.1。

請考慮個別套用這些設定來停用 TLS 1.0 和 TLS 1.1,以隔離有問題用戶端的設定問題。

設定客戶端和伺服器 TLS 重新交涉嚴格模式

下表顯示 Exchange Server/Windows Server 與預設 TLS 重新交涉嚴格模式設定的組合:

Exchange Server Windows 伺服器 支援 默認設定
Exchange Server 2019 任何 是 (strict mode enabled)
Exchange Server 2016 任何
Exchange Server 2013 任何 不適用

這些設定可用來設定 TLS 重新交涉嚴格模式。 這表示伺服器只允許套用此 安全性更新 的客戶端來設定和重新交涉 TLS 工作階段。 伺服器不允許不套用此 安全性更新 的客戶端來設定 TLS 工作階段。 在此情況下,伺服器會終止來自用戶端的這類要求。

同樣地,如果此 安全性更新 套用至用戶端,且客戶端處於嚴格模式,則用戶端可以設定 TLS 會話,並與套用此安全性更新的所有伺服器重新交涉。 用戶端完全無法使用未套用此安全性更新的伺服器來設定 TLS 會話。 用戶端無法繼續進行與這類伺服器的 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

下表顯示 Exchange Server/Windows Server 組合與預設建議的加密套件元件組態:

Exchange Server Windows 伺服器 支援 默認設定
Exchange Server 2019 任何
Exchange Server 2016 任何
Exchange Server 2013 Windows Server 2012 (R2)

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 或更高版本

注意事項

您可以使用 群組原則 物件 (GPO) 來設定加密套件。 如果 Cmdlet 已經透過 GPO 進行設定,或Functions登錄機碼已存在於下列路徑下,您就無法透過 Cmdlet 手動Enable/Disable-TLSCipherSuite進行設定:HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002

從提升許可權的 PowerShell 視窗執行下列命令,以設定建議的加密套件。

第一個工作是停用所有現有的加密套件:

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++
}

停用過期的加密和哈希

下表顯示 Exchange Server/Windows Server 組合與預設過期的加密和哈希組態:

Exchange Server Windows 伺服器 支援 默認設定
Exchange Server 2019 任何
Exchange Server 2016 任何
Exchange Server 2013 Windows Server 2012 (R2)

從提升許可權的 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

設定橢圓曲線喜好設定

下表顯示 Exchange Server/Windows Server 與預設橢圓曲線喜好設定的組合:

Exchange Server Windows 伺服器 支援 默認設定
Exchange Server 2019 任何
Exchange Server 2016 Windows Server 2016
Exchange Server 2013 任何 不適用

注意事項

建議您停用 curve25519 橢圓曲線,因為它在 FIPS 模式中無法使用。 如需詳細資訊,請參閱:Windows 10 1607 版和更新版本中的 TLS 橢圓曲線

從提升許可權的 PowerShell 視窗執行下列命令,以設定橢圓曲線喜好設定:

Disable-TlsEccCurve -Name "curve25519"
Enable-TlsEccCurve -Name "NistP384" -Position 0
Enable-TlsEccCurve -Name "NistP256" -Position 1

驗證是否使用 TLS 1.2

啟用 TLS 1.2 之後,驗證您的工作是否成功,而且系統能夠交涉 TLS 1.2 以進行輸入 (伺服器) 連線和輸出 (用戶端) 連線。 有一些方法可用來驗證 TLS 使用量,下列各節會討論其中一些方法。

許多用於 Exchange Server 的通訊協定都是以 HTTP 為基礎,因此會周遊 Exchange 伺服器上的 IIS 進程。 MAPI/HTTP、Outlook Anywhere、Exchange Web Services、Exchange ActiveSync、REST、OWA & EAC、離線通訊簿下載和自動探索是 Exchange Server 所使用的 HTTP 型通訊協定範例。

Internet Information Services (IIS) 記錄

IIS 小組已新增功能來 Windows Server 2012 R2 或更新版本,以記錄與加密通訊協定版本和加密相關的自定義欄位。 建議您檢閱部落格以取得 如何啟用這些自定義欄位 的檔,並開始剖析記錄檔,以取得與 HTTP 通訊協定相關的環境中連入連線的相關信息。

這些 IIS 自定義欄位不存在於 R2 之前的 Windows Server 版本 Windows Server 2012。 您的負載平衡器或防火牆記錄檔可能能夠提供這項資訊。 請向您的廠商要求指引,以判斷其記錄檔是否可提供這項資訊。

使用 Microsoft Edge 開發人員工具檢查 TLS 版本

當連線到 Outlook 網頁Developer Tools版 (OWA) 或 Exchange 管理員 Center (ECP) 時,您可以利用 Microsoft Edge 提供的 來檢查用來建立安全連線的 TLS 版本。 如果要執行這項操作,請依照下列步驟執行:

  1. 開啟 Microsoft Edge 瀏覽器,並建立 OWA 或 ECP 的 HTTPS 連線。
  2. CTRL + SHIFT + I 以開啟 Developer Tools
  3. +按兩下右上角的符號。
  4. Security點選下拉選單中的 。
  5. 檢查區段中的 Connection - secure connection settings TLS 版本。

訊息標頭 (Exchange Server 2016 或更新版本)

Exchange Server 2016 或更新版本中的訊息標頭數據,提供傳送和接收主機交換郵件時交涉並使用的通訊協定。 您可以使用訊息 標頭分析器 來取得每個躍點的清楚概觀。

注意事項

訊息標頭範例有一個已知的例外狀況。 當用戶端使用已驗證的 SMTP (也稱為 SMTP 用戶端提交通訊協定) 連線到伺服器來傳送訊息時,訊息標頭中的 TLS 版本不會顯示客戶用戶端或裝置所使用的正確 TLS 版本。 Microsoft 正在調查在未來更新中新增這項資訊的可能性。

透過SMTP記錄的郵件流程

Exchange Server 2013 和更新版本中的 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

下列範例會在執行信箱角色的 Exchange 伺服器上搜尋記錄檔,以尋找使用 TLS 1.0 通訊協定建立的連線:

Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName.Replace("Hub","FrontEnd")+"\*.log") "SP_PROT_TLS1_0"

在執行邊緣傳輸角色的 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 橋接的負載平衡器或防火牆時檢查流量。