我試圖強制最終用戶在訪問我們的網站時使用 HTTPS。我在 IIS 中的網站和應用程式層級啟用了 HSTS。我在網站層級設定了一個 HTTP 重定向到https://ourdomain.com
.我可以訪問我們網站的主頁並查看標題Strict-Transport-Security: max-age: XXXX; includeSubDomains
,但我沒有收到從http://internal-hostname/
到 的重定向https://ourdomain.com
。
我讀了IIS 10.0 版本 1709 HTTP 嚴格傳輸安全 (HSTS) 支持,並且我相信我已正確執行這些步驟。啟用 HSTS 後,我期望自動從 HTTP 重定向到 HTTPS。我也讀過在 IIS 中將所有 HTTP 重新導向到 HTTPS 的最佳方法,但這個問題集中在 IIS7 上。從那時起,HSTS 支援發生了很多變化,但也許我對自動重定向的期望是錯誤的。
系統資訊:
- Windows Server 2019(版本 1809)
- IIS 10.0.17763.1
我做了什麼:
開啟 IIS 設定管理員。
右鍵單擊“預設網站”,選擇“管理網站”,然後按一下“進階設定”。
使用以下設定啟用 HSTS:
- 啟用:真
- 包含子域:True
- 最大年齡:31536000
- 預載:假
- 將 HTTP 重新導向到 HTTPS
按一下“確定”
點擊“預設網站”並選擇“IIS”部分下的“HTTP 重定向”。
選取標記為「將請求重新導向到此目的地」並輸入我們的 HTTPS URL(這恰好是一個負載平衡器,而不是這個特定的 Web 伺服器)。
重新啟動 IIS。
在使用與 Web 伺服器的遠端桌面工作階段時,我開啟了 Microsoft Edge。
去了
http://internal-hostname/
Edge。
預期行為:使用者被重定向到https://ourdomain.com
.
實際行為:瀏覽器載入了「403.4 Forbidden」錯誤頁面。
HSTS 似乎已啟用,因為我Strict-Transport-Security
在回應中獲得了預期的 HTTP 標頭,但沒有獲得所需的從 HTTP 到 HTTPS 1 的重定向,如中指定的RFC 6797。
1一個好的答案也可能是「HSTS」是 IIS 10 中的一個不成熟的解決方案,我確實需要添加 HTTP 重定向規則。