HTTPS(SSL和TLS)確保用戶和網站通訊過程中安全,使攻擊者難於攔截、修改和假冒。當用戶手動輸入域名或http://鏈接,該網站的第一個請求是未加密的,使用普通的http。最安全的網站立即發送回一個重定向使用戶引向到https連接,然而,中間人攻擊者可能會攻擊攔截初始的http請求,從而控制用戶後續的回話。
自然而然HSTS應運而生為了解決這一潛在的安全問題。即時用戶輸入域名或http連接,瀏覽器將嚴格的升級到https連接。
(1)nginx配置HSTS
在nginx配置文件上設置HSTS Header:
引用:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload” always;
always 參數確保所有的響應設置該頭部,包括內部產生的錯誤響應。 nginx版本早於1.7.5不支持該always參數和內部產生的錯誤響應不設置該頭部信息。
加了上面這段後,重啟nginx 就可以了.
SSH系統如何檢測:
引用:
# curl -s -D- https://www.sample.com/ | grep -i Strict
strict-transport-security: max-age=31536000; includeSubDomains
如果出現strict-transport-security 等訊息就代表成功了,沒成功的話都沒字眼出現.
(2)將域名加入 HSTS Preload List
有一種狀況,就是當他第一次訪問的時候就可能有問題了,由於是http 協議進行的數據傳輸,因此這裡就可能被別人進行網域挾持了,他就可以改掉你的HSTS 規則,然後給你直接挾持到他們指定的網站上去,那麼用戶可能就無法正常訪問到我的網站了。
於是乎,HSTS Preload List 似乎就是一種機制來解決這個問題
HSTS Preload List 是一個站點的列表,他將會被通過硬編碼寫入Chrome 瀏覽器中,列表中的站點將會默認使用HTTPS 進行訪問,此外,Firefox 、Safari 、IE 11 和Edge 也同樣一份HSTS站點列表,其中包括了Chrome 的列表
很簡單,我們需要打開這個頁面,HSTS Preload Submission
https://hstspreload.org照著它的指示加入列表,這樣一來要被挾持也就不太可能了~