如何用HSTS實(shí)現(xiàn)http跳轉(zhuǎn)https?
我們知道,現(xiàn)在大多少瀏覽器都要使用https加密,對于這種情況,很多站點(diǎn)都使用了http強(qiáng)制跳轉(zhuǎn)https的方法,這種方法有效的解決了http網(wǎng)站在部署了SSL證書后,輸入域名直接跳轉(zhuǎn)到https的問題,但同樣也有被域名劫持的風(fēng)險(xiǎn),因?yàn)橛脩羰状卧L問站點(diǎn)的時(shí)候其實(shí)也是用的是http請求,之后被重定向到了https,如何解決這個(gè)問題呢?這里我們要借助一個(gè)新的安全協(xié)議:HSTS,教你如何用HSTS實(shí)現(xiàn)http跳轉(zhuǎn)https。
什么是HSTS
HSTS(HTTP Strict Transport Security)國際互聯(lián)網(wǎng)工程組織IETE正在推行一種新的Web安全協(xié)議,作用是強(qiáng)制客戶端(如瀏覽器)使用HTTPS與服務(wù)器創(chuàng)建連接。
主要目的是為了解決HTTPS網(wǎng)站首次請求時(shí)使用的是未加密的HTTP協(xié)議,也就說用戶一般訪問我們的網(wǎng)站都是直接在瀏覽器輸入域名,比如morong.me,然后我們的服務(wù)器檢測到是HTTP請求,就301跳轉(zhuǎn)到HTTPS頁面。那么前半程采用的就是未加密的HTTP請求,同樣存在被劫持的可能,那么HTTPS說好的安全性也就大打折扣了!
開啟HSTS
開啟HSTS很簡單,只要在我們網(wǎng)站的響應(yīng)頭里面新增HSTS即可,下面簡單說下
1、Nginx服務(wù)器
找到nginx.conf配置文件,在網(wǎng)站的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服務(wù)器
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、通用方法
如果你用的虛擬主機(jī),或者不會折騰WEB軟件,那么可以采用更簡單的通用方法。原理很簡單,通過代碼來新增響應(yīng)頭即可,這里只分享一下php的做法,其他語言自行參考:
將如下代碼插入到網(wǎng)站根目錄的index.php即可:
header("Strict-Transport-Security: max-age=63072000; includeSubdomains; preload");
篇尾語:HSTS有利有弊,啟用了的網(wǎng)站如果后期想http訪問需要一段時(shí)間才可以恢復(fù),另外目前不是所有的瀏覽器都支持HSTS,所以對于想使用這種方法強(qiáng)制跳轉(zhuǎn)https的用戶可以綜合考慮下。
以上,是為大家分享的“教你如何用HSTS實(shí)現(xiàn)http跳轉(zhuǎn)https”的全部內(nèi)容,如果用戶遇到的問題不能解決,可通過wosign官網(wǎng)客服尋求幫助,凡是選擇wosign ssl證書的網(wǎng)站用戶,wosign可提供免費(fèi)一對一的ssl證書技術(shù)部署支持,免除后顧之憂。