掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
HSTS 是 HTTP 嚴格傳輸安全(HTTP Strict Transport Security) 的縮寫。 這是一種網(wǎng)站用來聲明他們只能使用安全連接(HTTPS)訪問的方法。 如果一個網(wǎng)站聲明了 HSTS 策略,瀏覽器必須拒絕所有的 HTTP 連接并阻止用戶接受不安全的 SSL 證書。

服務器開啟HSTS的方法是:當客戶端通過HTTPS發(fā)出請求時,在服務器返回的超文本傳輸協(xié)議響應頭中包含Strict-Transport-Security字段。非加密傳輸時設置的HSTS字段無效。
最佳的部署方案是部署在離用戶最近的位置,例如:架構有前端反向代理和后端Web服務器,在前端代理處配置HSTS是最好的,否則就需要在Web服務器層配置HSTS。如果Web服務器不明確支持HSTS,可以通過增加響應頭的機制。如果其他方法都失敗了,可以在應用程序層增加HSTS。
HSTS啟用比較簡單,只需在相應頭中加上如下信息:
Strict-Transport-Security: max-age=63072000; includeSubdomains;preload;
Strict-Transport-Security是Header字段名,max-age代表HSTS在客戶端的生效時間。includeSubdomains表示對所有子域名生效。preload是使用瀏覽器內置的域名列表。
HSTS策略只能在HTTPS響應中進行設置,網(wǎng)站必須使用默認的443端口;必須使用域名,不能是IP。因此需要把HTTP重定向到HTTPS,如果明文響應中允許設置HSTS頭,中間人攻擊者就可以通過在普通站點中注入HSTS信息來執(zhí)行DoS攻擊。
$ vim /etc/apache2/sites-available/hi-linux.conf
# 開啟HSTS需要啟用headers模塊
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
ServerName www.hi-linux.com ServerAlias hi-linux.com ...
#將所有訪問者重定向到HTTPS,解決HSTS首次訪問問題。 RedirectPermanent / https://www.hi-linux.com/
...
# 啟用HTTP嚴格傳輸安全 Header always
set Strict-Transport-Security
"max-age=63072000; includeSubdomains; preload" ...
重啟Apache服務
$ service apche2 restart
$ vim /etc/nginx/conf.d/hi-linux.conf
server {
listen 443 ssl;
server_name www.hi-linux.com;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
...
}
server {
listen 80;
server_name www.hi-linux.com;
return 301 https://www.hi-linux.com$request_uri;
...
}
重啟Nginx服務
$ service nginx restart
要在IIS上啟用HSTS需要用到第三方模塊。
設置完成了后,可以用curl命令驗證下是否設置成功。如果出來的結果中含有Strict-Transport-Security的字段,那么說明設置成功了。
$ curl -I https://www.hi-linux.com
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 27 May 2017 03:52:19 GMT
Content-Type: text/html; charset=utf-8
...
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
...
對于HSTS以及HSTS Preload List,建議是只要不能確保永遠提供HTTPS服務,就不要啟用。因為一旦HSTS生效,之前的老用戶在max-age過期前都會重定向到HTTPS,造成網(wǎng)站不能正確訪問。唯一的辦法是換新域名。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流