共用方式為


在 Exchange Server 中設定 HTTP Strict Transport Security (HSTS)

適用於:是-img-16 2016是-img-192019 是-img-se訂閱版本

概觀

HTTP Strict Transport Security (HSTS) 是 廣泛支援的標準 ,可確保其瀏覽器一律使用 HTTPS 連線來連線,以協助保護網站訪客。 HSTS 的運作方式是將特殊的 HTTP 回應標頭從伺服器傳送到名為 Strict-Transport-Security (STS) 的瀏覽器。 此標頭包含指示 max-age 詞,指定) 秒內 (的時間長度,讓瀏覽器應該記得只能使用 HTTPS 存取網站。 瀏覽器收到此標頭之後,會自動將任何 HTTP 要求變更為存取網站,使其變成 HTTPS 要求。

HSTS 不只是新增對常見攻擊案例的保護,也有助於移除一般 (的需求,且現在不安全) 將使用者從 HTTP URL 重新導向至 HTTPS URL 的做法。 HSTS 也可用來解決主動和被動的網路攻擊。 不過,HSTS 無法解決惡意代碼、網路釣魚或瀏覽器弱點。

HSTS 的運作方式

當瀏覽器透過 HTTPS 連線接收 Strict-Transport-Security 標頭時,系統會指示它強制執行 HSTS;不過,在瀏覽器強制執行 HSTS 之前,必須符合一些需求。 具體而言,用來加密會話的憑證:

  • 客戶端必須有效且受用戶端信任;
  • 不得過期;和
  • 必須包含在瀏覽器中呼叫的網域或子域。

如需更一般的建議,請參閱使用 Microsoft Edge 安全地流覽 Web

一旦瀏覽器知道網域已啟用 HSTS,它就會:

  • https:// 律使用連線,包括單擊 http:// 連結或在網址列中輸入 URL 但未指定通訊協定時。
  • 拿掉使用者按一下警告的能力,例如 (、過期或無效的憑證、名稱不符等 ) 。

例如,在某些情況下 (使用者有新的計算機、新配置檔、新的瀏覽器,或已清除瀏覽器數據和設定) 用戶因為第一次造訪網站而沒有強制執行 HSTS,所以在短時間內容易受到攻擊。 為了解決這些案例,Chromium 項目會維護HSTS Preload List其他瀏覽器也使用的 (,例如 Microsoft Edge 和 Mozilla Firefox) 。 Preload List即使第一次造訪網站,也會強制執行 HSTS。

您可以 將網域提交至 HSTS 清單。 Web 伺服器 (或在我們的案例中,您的 Exchange 伺服器) 也必須傳送 preload 指示詞做為標頭的一 Strict-Transport-Security 部分,以發出 HSTS 預先載入應由瀏覽器執行的訊號。

Exchange Server 如何處理 HTTP 連線

根據預設,Exchange Server 不會將 HTTP 重新導向至 HTTPS 流量,因為預設網站需要 SSL。 如需詳細資訊,請參閱 Exchange 虛擬目錄的預設設定

不過,您可以依照在 Exchange Server 中為 Outlook 網頁版 設定 HTTP 到 HTTPs 重新導向中所述的步驟,設定從 HTTP 自動重新導向至 HTTPS,因此 Exchange Server 接受透過 HTTP 建立的連線,並回應 HTTP 302 redirect

HSTS 可協助大幅減少不安全的 HTTP 至 HTTPS 重新導向數目,因為重寫至 HTTPS 是由瀏覽器本身執行,而伺服器不再做為回應的一 HTTP 302 redirect 部分。 使用 HSTS 也可以改善效能,但這不是其主要用途。

不論預設組態 (不允許) 未加密的連線,提供標頭作為響應標頭的一部分是不錯的安全性做法 Strict-Transport-Security

在 Exchange Server 上啟用 HSTS

雖然您設定每個版本的方式不同,但 STS 標頭可以在 2019 Exchange Server 和 2016 Exchange Server 設定。

重要事項

HSTS 只能在 上 Default Web Site 設定,因為這是用戶端連線的端點。 HSTS 不能在 上 Exchange Back End設定。 您也應該考慮在透過第 7 層的 Exchange 伺服器前方作的裝置上,透過響應標頭設定 HSTS (例如負載平衡器或反向 Proxy) 。

max-age最好先設定 300 (秒,) 5 分鐘。 進行變更之後,您應該密切監視對 Exchange 伺服器的用戶端連線能力,並在發生任何問題時復原變更。

更新為一 max-age 周 () 604800 或一個月 () 2592000 的值,並在您繼續之前等候整個 max-age 階段。 max-age從安全性觀點來看,31536000 () 一年的值應該設定為最小值,而且如果您打算將網域新增至 HSTS Preload List,則至少也需要 。 max-age建議將值設定為兩年 (63072000) 。

注意事項

下列範例會將 值設定 max-age 為300秒,這是只應用於驗證功能的組態。 當您準備好將組態帶入生產環境時,請務必將屬性值調整為較高的值。

Exchange Server 2019

若要設定 Exchange Server 2019 傳送Strict-Transport-Security標頭,您可以使用 Windows PowerShell 或 IIS 管理員使用者介面 (UI) 。 在下一節中,我們會描述這兩種方法。 HSTS 組態是每部伺服器的組態,因此必須在每個 Exchange 伺服器上完成。

透過PowerShell進行 HSTS 設定

從提升權限的 PowerShell 視窗執行下列命令,以設定和啟用 HSTS:

注意事項

若要為 Exchange Server 2019 設定較高的max-age值,您可以使用較高的值再次執行命令。 不需要事先移除現有的設定。

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 300
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $true

如果您打算將網域新增至 HSTS Preload List,則必須確定 preload 指示詞也會當做標頭的一 Strict-Transport-Security 部分傳送。 如果您不打算將網域提交至 , preload 則不得傳送 指示 HSTS Preload List詞。

Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $true

最後,必須執行下列命令才能完成 HSTS 設定:

Stop-IISCommitDelay
Remove-Module IISAdministration

透過 IIS 管理員進行 HSTS 設定

在 Internet Information Services Manager 中執行下列步驟,以設定和啟用 HSTS:

  1. 啟動 IIS 管理員 (InetMgr.exe)

  2. 流覽至 Sites ,然後按兩下 Default Web Site

  3. 在功能表中 Actions 選取 HSTS...

  4. 核取複 Enable 選框、定義 max-age 值,並根據本文中的描述選取指示詞

    重要事項

    我們無法使用 HSTS 設定將 HTTP 重新導向至 HTTPS,因為這會中斷某些案例的連線,包括 Exchange 管理命令介面 (EMS) 。 如果您想要啟用 HTTP 至 HTTPS 重新導向,您必須遵循在 Exchange Server 中設定 HTTP 到 https 重新導向 Outlook 網頁版 中所述的步驟。

  5. 按兩下 OK 以完成並啟用設定

Exchange Server 2016

注意事項

雖然在 Exchange Server 2019 支援的作系統上可透過UI進行 HSTS 設定,但此控件在 Exchange Server 2016 支援的作系統上無法原生使用。 因此,我們只會說明要透過PowerShell完成的步驟。

若要設定 Exchange Server 2016 以傳送Strict-Transport-Security標頭,請從提升許可權的 PowerShell 視窗執行下列命令。 HSTS 組態是每部伺服器的組態,因此必須在每個 Exchange 伺服器上完成:

注意事項

若要為 Exchange Server 2016 設定較高的max-age值,您必須先移除 HTTP 回應標頭,然後再執行下列命令。

Windows Server 2012 & 2012 R2

如果您不打算將網域新增至 HSTS Preload List,則必須確定 preload 指示詞未傳送為標頭的一 Strict-Transport-Security 部分。 執行下列命令來設定 HSTS, 而不 傳送 preload 指示詞:

Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains"}

or

如果您打算將網域新增至 HSTS Preload List,則必須確定 preload 指示詞會當做標頭的一 Strict-Transport-Security 部分傳送。 執行下列命令來設定 Exchange Server,以在 HSTS 組態中傳送 preload 指示詞:

Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains; preload"}

Windows Server 2016

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"

如果您不打算將網域新增至 HSTS Preload List,則必須確定 preload 指示詞未傳送為標頭的一 Strict-Transport-Security 部分。 執行下列命令來設定 HSTS, 而不 傳送 preload 指示詞:

New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}

or

如果您打算將網域新增至 HSTS Preload List,則必須確定 preload 指示詞會當做標頭的一 Strict-Transport-Security 部分傳送。 執行下列命令來設定 Exchange Server,以在 HSTS 組態中傳送 preload 指示詞:

New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}

最後,必須執行下列命令才能完成 HSTS 設定:

Stop-IISCommitDelay
Remove-Module IISAdministration

停用 Exchange Server 上的 HSTS

如果您想要停止 Exchange Server 傳送Strict-Transport-Security標頭,您可以復原每個伺服器基底上的設定。 停用 HSTS 的步驟在 2016 Exchange Server 和 2019 Exchange Server 不同。

注意事項

HSTS 規格可讓您傳送max-age值為 的0指示詞。 此設定可用來覆寫瀏覽器快取的 HSTS 原則資訊。 如果您打算移除 Exchange Server HSTS 設定,則在移除Strict-Transport-Security標頭組態之前先設定 max-age0值可能很有用。

Exchange Server 2019

若要讓 Exchange Server 2019 停止傳送Strict-Transport-Security標頭,您可以使用 Windows PowerShell 或 IIS 管理員使用者介面 (UI) 。 在下一節中,我們會描述這兩種方法。

透過PowerShell進行 HSTS 設定

從提升權限的 PowerShell 視窗執行下列命令,以停用 HSTS:

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $false
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 0
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $false

如果先前的 HSTS 組態是傳送 preload 指示詞,請務必同時停用:

重要事項

也請記得 從 HSTS 預先載入清單要求移除 。 如果您忘記從預先載入清單中移除網域,瀏覽器會繼續嘗試強制執行 HSTS。

Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $false

最後,必須執行下列命令才能完成 HSTS 設定:

Stop-IISCommitDelay
Remove-Module IISAdministration

透過 IIS 管理員進行 HSTS 設定

在 Internet Information Services Manager 中執行下列步驟以停用 HSTS:

  1. 啟動 IIS 管理員 (InetMgr.exe)

  2. 流覽至 Sites ,然後按兩下 Default Web Site

  3. 在功能表中 Actions 選取 HSTS...

  4. 取消核取所有指示詞,將指示詞設定 max-age0 ,最後取消核取 Enable 複選框

  5. 按兩下 OK 以完成設定

Exchange Server 2016

注意事項

雖然在 Exchange Server 2019 支援的作系統上可透過UI進行 HSTS 設定,但此控件在 Exchange Server 2016 支援的作系統上無法原生使用。 因此,我們只會說明要透過PowerShell完成的步驟。

若要讓 Exchange Server 2016 停止傳送Strict-Transport-Security標頭,請從每個 Exchange 伺服器上提升許可權的 PowerShell 視窗執行下列命令:

Windows Server 2012 & 2012 R2

Import-Module WebAdministration
Remove-WebConfigurationProperty -PSPath "IIS:\Sites\Default Web Site" -Filter "system.webServer/httpProtocol/customHeaders" -Name . -AtElement @{name="Strict-Transport-Security"}

Windows Server 2016

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"

如果先前的 HSTS 設定 未傳送preload 指示詞,請執行下列命令:

Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}

or

如果先前的 HSTS 設定是 傳送preload 指示詞,請務必執行此命令:

Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}

最後,必須執行下列命令才能完成 HSTS 設定:

Stop-IISCommitDelay
Remove-Module IISAdministration

驗證 HSTS 是否如預期般運作

確認 HSTS 保護如預期般運作的最佳方式是使用支援 HSTS (的新式瀏覽器,例如,Microsoft Edge、Firefox、Chrome、Safari、Opera 等 ) 。 使用 Microsoft Edge 瀏覽器時,可以遵循下列步驟。 如果您使用不同的瀏覽器,請參閱檔以瞭解檢查 HSTS 旗標的步驟:

  1. 開啟瀏覽器,並建立 OWA 或 ECP 的 HTTPS 連線。 請確定 Exchange Server 所傳回的憑證符合您 (使用的 (子 ) 網域,例如 e2k16-2.contoso.lab) ,且受到用戶端電腦 (信任,因為這是啟用網域) 的瀏覽器 HSTS 保護的必要條件。
  2. 在網址列中輸入 edge://net-internals/#hsts ,然後按 Enter。
  3. 輸入您用來存取 OWA 或 ECP (的功能變數名稱,例如 e2k16-2.contoso.lab) 到 Query HSTS/PKP domain 方塊中,然後按 Enter。

例如:

如果結果為 Not found,這表示不會將 HSTS 用於網域。 原因可能是之前未流覽過 URL,或 HSTS 原則存放區的專案已過期, (在指示詞) 中 max-age 指定的時間有效。

如果找到結果,輸出看起來會像這樣:

例如,如果使用 HSTS 且連線不受信任, (URL 不符合發出憑證的網域,或憑證不受信任或過期) ,則使用者會看到下列 無法略過的警告:

封鎖 Edge Microsoft頁面:

封鎖頁面 Mozilla Firefox: