在 HSTS 處於活動狀態時使用 CNAME 記錄重定向到 HTTPS
我們在以下 URL 上有一個以 HTTPS 執行的網站:abc.example.com。
問題是我們的客戶認為任何網站的 URL 都應該以它開頭
www
並列印www.abc.example.com
在它的所有標籤上……沒問題,我只是使用 IIS 的 URL 重寫功能創建了一個重定向規則,將所有主機名重定向到
https://abc.example.com
. 到現在為止還挺好。幾個月前,我們收到了他們的資訊系統部門的一封電子郵件,指出
abc.example.com
缺少Strict-Transport-Security
標題。他們要求我們實現以下標頭:Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.
當時我並沒有完全清楚這個header的具體作用,所以一味的把它加到網站上。我確實測試了該網站,但我從未使用
www.abc.example.com
.剛才才發現這個 HSTS 標頭會自己將所有 HTTP URL 重定向到 HTTPS URL,導致忽略了我的自定義重定向規則。現在的問題是使用者輸入
http://www.abc.example.com
並被重定向到https://www.abc.example.com
,而不是https://abc.example.com
,導致 SSL 證書錯誤,因為www.abc.example.com
沒有 SSL 證書。只要
includeSubDomains
處於活動狀態,除非我專門為www.abc.example.com
.這就是為什麼我想嘗試通過使用 CNAME 記錄在 DNS 級別重定向來解決這個問題:
www.abc.example.com. CNAME abc.example.com.
我的問題是,這行得通嗎?當使用者進入
http://www.abc.example.com
時,CNAME 記錄會先重定向這個 URLhttp://abc.example.com
,然後再成功重定向到https://abc.example.com
使用 HSTS 標頭嗎?或者該參數是否會preload
阻止這種情況發生,即使在 DNS 級別也是如此?任何建議或幫助表示讚賞。
不,它不會起作用。沒有 DNS 級別的重定向。重定向是 HTTP 協議的一個特性,而 DNS(
A
和CNAME
)記錄僅用於解析 IP 地址。嘗試通過刪除標題來撤銷情況也沒有用,
Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.
因為它將在每個瀏覽器上記憶體
31536000
幾秒鐘,即 365 天。但是,如果您不以這種方式實現 HSTS,則不會獲得太多好處,因為有人可能會
http://www.abc.example.com
在它被重定向到https://
.在這裡,唯一的出口可能是獲得一個萬用字元證書
*.abc.example.com
,或者一個多主機名證書,兩者都作為Subject Alternative Name。