深入剖解HSTS,啟動HTTPS的強制機制
關於HSTS的定義
HSTS全稱是HTTP Strict Transport Security,中文名HTTP嚴格傳輸安全,誕生於2012年,至今已有五年歷史。它是一種Web安全策略機制(web security policy mechanism),IETF標準軌道協議,其功能是強制客戶端(如瀏覽器)使用HTTPS與伺服器創建連接。
作用
強制瀏覽器直接發起HTTPS請求,拒絕不安全的鏈接
抵禦SSL剝離攻擊,防止中間人攻擊。
HSTS工作原理:
HSTS的核心點是HTTP響應頭(HTTP Response Header),是由安全的HTTPS站點發出。
HSTS Header的樣式:
Strict-Transport-Security: [; includeSubDomains][; preload]
其中:
includeSubDomains,可選參數,意味著當前域名及其子域名均開啟HSTS保護。
Preload,可選參數,預載入到瀏覽器緩存。
完整的HSTS流程圖
瀏覽器阻止用戶繼續訪問不安全的站點
因此,站長們必須要確保站點必須使用安全有效的SSL證書,並正確部署。如果當瀏覽器接收到HSTS Header(假如有效期是1年),一旦網站的證書出現錯誤,用戶無法選擇忽略,用戶將在接下來的1年時間內都無法訪問您的網站,直到證書錯誤被修復,或者用戶主動清除瀏覽器緩存。
HSTS Preloading List
HSTS必須要在瀏覽器訪問過的網站一次以後才會生效,如果希望提前生效,需要申請 HSTS Preloading List(HSTS預載入列表)。
如果站長要想把自己的域名加進這個列表,首先需要滿足以下條件:
擁有一個有效合法的SSL 證書;
在同一台主機上提供重定向響應,以及接收重定向的HTTPS請求;
確保所有子域名均啟用 HTTPS;
在根域名的HTTP響應頭中,加入HSTS Header,並滿足下列條件:
必須包含includeSubDomains參數
必須指定preload參數
滿足條件後,在HSTS Preload List的官網上(https://hstspreload.org)提交申請。
檢查域名是否加入到Preload List
從提交申請到完成審核,成功加入到內置列表,時間為幾天到幾周不等,要視具體情況而定。可通過官網https://hstspreload.org或在Chrome地址欄里輸入chrome://net-internals/#hsts查詢狀態。
支持HSTS瀏覽器
目前HSTS Preloading List由 Google Chrome 維護,HSTS Preloading List使用覆蓋Chrome、Firefox、Safari、IE 和 Microsoft Edge 等主流瀏覽器。
Google Chrome 4及以上版本
Firefox 4及以上版本
Opera 12及以上版本
Safari從OS X Mavericks起
Internet Explorer 11及以上版本
GIF/6K
如何開啟HSTS
啟動HSTS並不難,只需要在伺服器配置文件上設置HSTS Header,就可以成功開啟HSTS機制。下面介紹不同伺服器設置HSTS Header。
、Nginx伺服器
只需要在站點server模塊內插入如下配置並重啟:
server {
listen 443 ssl http2;
server_name zhangge.net;
# 直接在server插入測試居然不生效,最後發現要在location ~ *php 內插入:
location ~ [^/].php(/|$) {
# 以下略…
、Apache伺服器
Apache如下配置並重啟:
# 先在Apache載入mod_header庫,一般位於httpd.conf文件,自行搜索mod_headers並取消注釋
LoadModule headers_module modules/mod_headers.so
#然後在站點VirtualHost裡面插入HSTS響應頭信息,比如:
、LigHttpd
將下述配置增加到 Lighttpd 配置文件(一般是 /etc/lighttpd/lighttpd.conf)並重啟:
server.modules += ( 「mod_setenv」 )
$HTTP[「scheme」] == 「https」 {
}
、通用方法
如果用的虛擬主機,或者不會折騰WEB軟體,那麼可以採用更簡單的通用方法。通過代碼來新增響應頭即可,這裡只分享一下php的做法,其他語言自行參考:
將如下代碼插入到網站根目錄的index.php即可:
無論是HTTPS協議還是HSTS機制,首要的大前提必須擁有一個有效合法的SSL證書。CA機構是全球頒發SSL證書的唯一合法機構,因此獲取SSL證書的正確渠道是合法的CA機構申請獲取。數安時代(GDCA)是已通過國際WEBTRUST認證,具備國際化的電子認證服務能力的國內CA機構之一,旗下的SSL證書包括信鑒易 TrustAUTH、GlobalSign、Symantec、GeoTrust SSL證書等多個國際品牌,證書數量達數十種,站長們可根據自身的需求向數安時代GDCA機構申最佳的SSL證書,或向其公司的專業人員資訊,選取合適的SSL證書。數安時代(GDCA)的專業團隊將會為您提供最佳的HTTPS解決方案。
文章轉載:https://www.trustauth.cn/news/security-news/22639.html
※SQL注入攻擊與防禦
※Nginx 反向代理伺服器的工作原理
※簡述Mariadb 設置root密碼以及修改root密碼的方法
※哈希值的定義與應用
※詳解MySQL中的字元串拼接函數
TAG:數安時代GDCA |