啟用 HSTS 後 IIS 10 不會將 HTTP 重新導向到 HTTPS

啟用 HSTS 後 IIS 10 不會將 HTTP 重新導向到 HTTPS

我試圖強制最終用戶在訪問我們的網站時使用 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

我做了什麼:

  1. 開啟 IIS 設定管理員。

  2. 右鍵單擊“預設網站”,選擇“管理網站”,然後按一下“進階設定”。

  3. 使用以下設定啟用 HSTS:

    • 啟用:真
    • 包含子域:True
    • 最大年齡:31536000
    • 預載:假
    • 將 HTTP 重新導向到 HTTPS

    顯示啟用了最長期限和重定向的 HSTS 的高級設定螢幕截圖

  4. 按一下“確定”

  5. 點擊“預設網站”並選擇“IIS”部分下的“HTTP 重定向”。

  6. 選取標記為「將請求重新導向到此目的地」並輸入我們的 HTTPS URL(這恰好是一個負載平衡器,而不是這個特定的 Web 伺服器)。

    預設網站的 IIS HTTP 重定向設定的螢幕截圖

  7. 重新啟動 IIS。

  8. 在使用與 Web 伺服器的遠端桌面工作階段時,我開啟了 Microsoft Edge。

  9. 去了http://internal-hostname/Edge。

預期行為:使用者被重定向到https://ourdomain.com.

實際行為:瀏覽器載入了「403.4 Forbidden」錯誤頁面。

開啟開發人員工具並顯示 Strict-Transport-Security 標頭的主頁螢幕截圖

HSTS 似乎已啟用,因為我Strict-Transport-Security在回應中獲得了預期的 HTTP 標頭,但沒有獲得所需的從 HTTP 到 HTTPS 1 的重定向,如中指定的RFC 6797


1一個好的答案也可能是「HSTS」是 IIS 10 中的一個不成熟的解決方案,我確實需要添加 HTTP 重定向規則。

相關內容