Domain-Name-System

在 HSTS 處於活動狀態時使用 CNAME 記錄重定向到 HTTPS

  • October 30, 2017

我們在以下 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 記錄會先重定向這個 URL http://abc.example.com,然後再成功重定向到https://abc.example.com使用 HSTS 標頭嗎?或者該參數是否會preload阻止這種情況發生,即使在 DNS 級別也是如此?

任何建議或幫助表示讚賞。

不,它不會起作用。沒有 DNS 級別的重定向。重定向是 HTTP 協議的一個特性,而 DNS(ACNAME)記錄僅用於解析 IP 地址。

嘗試通過刪除標題來撤銷情況也沒有用,

Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.

因為它將在每個瀏覽器上記憶體31536000幾秒鐘,即 365 天。

但是,如果您不以這種方式實現 HSTS,則不會獲得太多好處,因為有人可能會http://www.abc.example.com在它被重定向到https://.

在這裡,唯一的出口可能是獲得一個萬用字元證書*.abc.example.com,或者一個多主機名證書,兩者都作為Subject Alternative Name

引用自:https://serverfault.com/questions/880955