如何用HSTS實現http跳轉https?
我們知道,現在大多少瀏覽器都要使用https加密,對于這種情況,很多站點都使用了http強制跳轉https的方法,這種方法有效的解決了http網站在部署了SSL證書后,輸入域名直接跳轉到https的問題,但同樣也有被域名劫持的風險,因為用戶首次訪問站點的時候其實也是用的是http請求,之后被重定向到了https,如何解決這個問題呢?這里我們要借助一個新的安全協議:HSTS,教你如何用HSTS實現http跳轉https。
什么是HSTS
HSTS(HTTP Strict Transport Security)國際互聯網工程組織IETE正在推行一種新的Web安全協議,作用是強制客戶端(如瀏覽器)使用HTTPS與服務器創建連接。
主要目的是為了解決HTTPS網站首次請求時使用的是未加密的HTTP協議,也就說用戶一般訪問我們的網站都是直接在瀏覽器輸入域名,比如morong.me,然后我們的服務器檢測到是HTTP請求,就301跳轉到HTTPS頁面。那么前半程采用的就是未加密的HTTP請求,同樣存在被劫持的可能,那么HTTPS說好的安全性也就大打折扣了!
開啟HSTS
開啟HSTS很簡單,只要在我們網站的響應頭里面新增HSTS即可,下面簡單說下
1、Nginx服務器
找到nginx.conf配置文件,在網站的server配置代碼里面加入如下代碼:
server {
listen xx.xx.xx.xx:443 ssl spdy;
server_name www.gworg.com;
add_header Strict-Transport-Security "max-age=31536000;includeSubdomains"#加入此行代碼
…… }
2、Apache服務器
LoadModule headers_module modules/mod_headers.so
<VirtualHost 0.0.0.0:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>
3、Lighttpd
server.modules += ( "mod_setenv" )
$HTTP["scheme"] == "https" { setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload") }
4、通用方法
如果你用的虛擬主機,或者不會折騰WEB軟件,那么可以采用更簡單的通用方法。原理很簡單,通過代碼來新增響應頭即可,這里只分享一下php的做法,其他語言自行參考:
將如下代碼插入到網站根目錄的index.php即可:
header("Strict-Transport-Security: max-age=63072000; includeSubdomains; preload");
篇尾語:HSTS有利有弊,啟用了的網站如果后期想http訪問需要一段時間才可以恢復,另外目前不是所有的瀏覽器都支持HSTS,所以對于想使用這種方法強制跳轉https的用戶可以綜合考慮下。
以上,是為大家分享的“教你如何用HSTS實現http跳轉https”的全部內容,如果用戶遇到的問題不能解決,可通過wosign官網客服尋求幫助,凡是選擇wosign ssl證書的網站用戶,wosign可提供免費一對一的ssl證書技術部署支持,免除后顧之憂。