相關推薦

啟用HSTS並加入HSTS Preload List讓網站Https訪問更加安全-附刪除HSTS方法

之所以想起要啟用HSTS,主要是最近不少的朋友說網站打不開了,雖然Ping值一切正常,但是就是網頁無法訪問。猜測可能是DNS解析這一環節出了問題。另外自己本地的DNS劫持已經到了“喪心病狂”的地步了,不加Https訪問京東淘寶等全部被加入各種推廣。

啟用HSTS後自然想要加入HSTS Preload List了,這是各大瀏覽器都遵循的一個強制使用Https訪問的網站列表,只要加入到這個列表中,所有的通過瀏覽器訪問請求都會強制走Https,這在很大程度上可以杜絕“第一次”訪問的劫持,最大限度地提高Https訪問的安全性。

需要注意的是加入HSTS Preload List需要以根域名的形式加入,如果你啟用了www.wzfou.com這樣的二級域名形式訪問,你需要先停止301跳轉,即要保證wzfou.com這樣的根域名是用Https可以訪問到的。(PS:之前我有一個網站就是這樣的情況,如有變化大家在申請時結合具體情況分析)。

啟用HSTS並加入HSTS Preload List讓網站Https訪問更加安全-附刪除HSTS方法

HSTS是在服務器強化Https安全,如果你的網站還沒有啟用Https,可以試試免費的SSL證書Let’s Encrypt,最近還推出了免費泛域名證書:Let’s Encrypt Wildcard免費泛域名SSL證書一鍵申請與SSL使用教程,更多的關於建站的經驗與技巧,你可以看看:

  1. 站長必備技能批量給圖片添加水印-XnView和美圖秀秀批量處理方法
  2. PayPal連連提現五個注意事項-賬號綁定,失敗鎖定,手續費與提現時長
  3. 自建CDN加速-Nginx反向綁定,緩存加速,自動更新緩存和獲取真實IP

一、服務器啟用HSTS

HSTS是國際互聯網工程組織IETE 正在推行一種新的Web安全協議HTTP Strict Transport Security(HSTS)。採用HSTS 協議的網站將保證瀏覽器始終連接到該網站的HTTPS 加密版本,不需要用戶手動在URL 地址欄中輸入加密地址。

1.1 Apache2 配置HSTS

編輯你的apache 配置文件(如/etc/apache2/sites-enabled/website.conf 和/etc/apache2/httpd.conf ),並加以下行到你的HTTPS VirtualHost:

# Apache需加載mod_header庫,一般位於httpd.conf文件,搜索mod_headers並取消註釋。(已加載可跳過)
LoadModule headers_module modules/mod_headers.so #然後對應站點VirtualHost裡面插入HSTS響應頭信息

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

保存Apache 配置文件,然後重啟。現在你的web 站點在每次訪問時都會發送該請求頭,失效時間是兩年(秒數),這個失效時間每次都會設置為兩年後。

1.2 Nginx 配置HSTS

Nginx 服務器中的配置最為簡單,只需要編輯Nginx 配置文件(如:/usr/local/nginx/conf/nginx.conf)將下面行添加到你的HTTPS 配置的server 塊中即可:

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

如果你發現直接添加在server 塊中無效的情況,你可以試試直接插入到location ~ *php 內:

location ~ [^/].php(/|$) {
	add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
}

配置保存後重啟Nginx 服務。

1.3 在Lighttpd 中配置HSTS

將下述配置增加到你的Lighttpd 配置文件(例如:/etc/lighttpd/lighttpd.conf):

server.modules += ( "mod_setenv" )
$HTTP["scheme"] == "https" {
	setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload")
}

編輯保存後記得重啟一下。

1.4 PHP通用配置HSTS 方法

將以下代碼添加到網站根目錄index.php 中或者header.php中

header("Strict-Transport-Security: max-age=63072000; includeSubdomains; preload");

開啟了HSTS後,你部署SSL/TLS的服務檢測得分就可能是A+以上了。ssllabs官網以及演示如下:

  1. 官網:https://www.ssllabs.com/
  2. 中文版:https://myssl.com
  3. 演示:https://www.ssllabs.com/ssltest/analyze.html?d=wzfou.com

HSTS Preload List達到A+等級

二、加入HSTS Preload List

HSTS preload list是Chrome瀏覽器中的HSTS預載入列表,在該列表中的網站,使用Chrome瀏覽器訪問時,會自動轉換成HTTPS。Firefox、Safari、Edge瀏覽器也在採用這個列表。

  1. https://hstspreload.org/
  2. https://wzfou.com/cloudflare/

2.1 測試HSTS是否生效

直接打開Chrome查看網絡,就可以看到頭部已經包含了HSTS信息了。

HSTS Preload List頭部信息

2.2 做好Http跳轉Https

將wzfou.com以及任意二級域名都要做好Http跳轉到Https,啟用了HSTS後請求地址為header頭中的Location會顯示307 ,即要求瀏覽器繼續向Location的地址POST內容。

HSTS Preload List跳轉成功

2.3 加入HSTS Preload List

進入hstspreload官網,輸入你的域名,然後檢測結果會告訴是否符合加入HSTS Preload List,沒有問題的話勾選確定。(點擊放大)

申請加入HSTS Preload List

HSTS Preload List審核的時間有長有短,一旦提交後你就只能等待。

HSTS Preload List耐心等待

三、HSTS Preload List問題

3.1 是否成功加入HSTS Preload List

直接到下列網址搜索是否有你的域名即可:

  1. https://cs.chromium.org/chromium/src/net/http/transport_security_state_static.json

當然,加入到了HSTS Preload List後,你可能還需要等待1-2月,待新版本的Chrome和Chromium、Firefox、IE等發布後,你的域名算是正式被各大瀏覽器承認並強制使用Https訪問了,你可以在Chrome瀏覽器的地址框中輸入“chrome://net-internals/#hsts”查看。

HSTS Preload List搜索查看

3.2 如何撤銷HSTS Preload List

  1. https://hstspreload.org/removal/

官方也提供了一個申請刪除HSTS Preload List,不過需要注意的是撤銷HSTS Preload List和加入HSTS Preload List一樣,花費的時間可能需要幾個月以上,所以申請HSTS Preload List前一定要謹慎。

HSTS Preload List刪除

四、總結

由於HSTS Preload List是一個內置於各大瀏覽器的Https網站列表,所以能否加入成功除了審核通過外,還得看瀏覽器版本的更新。一旦加入HSTS Preload List了想要退出就比較麻煩了,所以加入前一定要考慮好。

那麼哪些網站適合加入HSTS Preload List?個人博客或者網站可以來玩一玩,對於安全性要求比較高的電商網站,會員管理後台等完全可以使用HSTS Preload List,對於一些有Http需要的還是不加入得好。

为您推荐

發佈留言

联系我们

联系我们

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部