HSTS preload list

將域名加入 HSTS Preload List

Written by

HSTS 是 HTTPS 性能優化和安全優化中最重要的一環,能夠給 HTTPS 帶來好處,這將指示瀏覽器只通過 HTTPS 連接到服務器和整個域。即使用戶鍵入 http://www.domain.com 的網址,也可以使用書籤或第三方 HTTP 鏈接,瀏覽器會自動將請求升級為 HTTPS。

內容目錄:

  • HSTS Preload List
  • HSTS header 標頭的寫法

甚麼是 HSTS,詳細說明請參考這一篇:解決缺陷,讓 HSTS 變得完美

為什麼要加入 HTTPS,簡單明瞭的說明,這樣理解 HTTPS 更容易。

https://showme.codes/2017-02-20/understand-https/

HSTS Preload List

想要將自己的域名也加入 HSTS Preload List 前,有幾個規定:

  • 一個有效 SSL 加密證書 ( 免費的 Let’s Encrypt 也可以 )
  • 正確的 http 跳轉 https 的配置
  • https 配置中要有 HSTS header
  • 所有子域名也要配置 https 加密證書,DNS 設置要正確加上 www 別名。

上面 4 點準備好後,就可以到 HSTSPreload.org 提交你的域名,一搬 7 ~ 10 天左右就可以加入 HSTS 列表。

提交 HSTS 域名網址:

使用 Chrome 檢測是否有加入 HSTS 列表:

chrome://net-internals/#hsts

把上面的網址貼上 Chrome 瀏覽器後,在 Query domain 鍵入域名查詢。

HSTS Preload List

HSTS header 標頭的寫法

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

上面配置的意思是,在接下來的一年 ( 31536000 秒 ) 中,瀏覽器只要向 example.com 或其子域名傳送 HTTP 請求時,必須採用 HTTPS 來發起連線。比如,用戶點擊你的網址 http://www.example.com/ ,瀏覽器就會自動將 http 轉寫成 https,然後直接向 https://www.example.com/ 傳送請求。

在接下來的一年中,如果你的 example.com SSL 加密憑證無效,用戶也不能忽略瀏覽器警告繼續訪問你的網站。

所以你要提交 HSTS Preload List 時要想清楚,提交成功後,以後連同子域名都要加入 SSL 加密證書,如果後悔不想使用 HSTS,目前退出的機制不是很方便,先將 HSTS header 標頭刪除,然後使用郵件 hstspreload@chromium.org 提出刪除。

如果只想瀏覽器可以直接 https 訪問網站,且不影響子網域,header 寫法如下:

add_header Strict-Transport-Security "max-age=31536000";

max-age = 31536000 的時間,可以自己定義,最小可以 5 分鐘 (max-age = 300),最大可以到 2 年 (max-age = 63072000),在 HSTSPreload.org 規則中,至少要有 18 週 (10886400 seconds)。

引用 What is HSTS? 作為結論:

  • HTTP 嚴格傳輸安全性是一種簡單但功能強大的 Web 安全策略,可保護 HTTPS 網站免受 MITM 攻擊。
  • 從 HTTP 切換到安全 HTTPS 連接 ( 使用 SSL ) 提供了防禦降級攻擊的最佳防禦。
  • HSTS 確保所有通信都被加密,並且所有發送和接收的響應都被傳送到已驗證的服務器並從其接收。

What is HSTS?

https://www.stackpath.com/edge-academy/what-is-hsts/

hosted by kinsta

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance