您好,登錄后才能下訂單哦!
HTTPS 在保護(hù)用戶(hù)隱私,防止流量劫持方面發(fā)揮著非常關(guān)鍵的作用,但與此同時(shí),HTTPS 也會(huì)降低用戶(hù)訪(fǎng)問(wèn)速度,增加網(wǎng)站服務(wù)器的計(jì)算資源消耗。
本文主要介紹 https 對(duì)用戶(hù)體驗(yàn)的影響。
(1)HTTPS(全稱(chēng):Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類(lèi)同http:體系。用于安全的HTTP數(shù)據(jù)傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司進(jìn)行,提供了身份驗(yàn)證與加密通訊方法,現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付方面。
(2)超文本傳輸協(xié)議 (HTTP-Hypertext transfer protocol) 是一種詳細(xì)規(guī)定了瀏覽器和萬(wàn)維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過(guò)因特網(wǎng)傳送萬(wàn)維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。
(3)https協(xié)議需要到ca申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少,需要交費(fèi)。
http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議
http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議 ,要比http協(xié)議安全
在介紹速度優(yōu)化策略之前,先來(lái)看下 HTTPS 對(duì)速度有什么影響。影響主要來(lái)自?xún)煞矫妫?/p>
協(xié)議交互所增加的網(wǎng)絡(luò) RTT(round trip time)。
加解密相關(guān)的計(jì)算耗時(shí)。
下面分別介紹一下。
由于 HTTP 和 HTTPS 都需要 DNS 解析,并且大部分情況下使用了 DNS 緩存,為了突出對(duì)比效果,忽略主域名的 DNS 解析時(shí)間。
用戶(hù)使用 HTTP 協(xié)議訪(fǎng)問(wèn)http://www.baidu.com(或者 www.baidu.com) 時(shí)會(huì)有如下網(wǎng)絡(luò)上的交互耗時(shí):
圖 1 HTTP 首個(gè)請(qǐng)求的網(wǎng)絡(luò)耗時(shí)
可見(jiàn),用戶(hù)只需要完成 TCP 三次握手建立 TCP 連接就能夠直接發(fā)送 HTTP 請(qǐng)求獲取應(yīng)用層數(shù)據(jù),此外在整個(gè)訪(fǎng)問(wèn)過(guò)程中也沒(méi)有需要消耗計(jì)算資源的地方。
接下來(lái)看 HTTPS 的訪(fǎng)問(wèn)過(guò)程,相比 HTTP 要復(fù)雜很多,在部分場(chǎng)景下,使用 HTTPS 訪(fǎng)問(wèn)有可能增加 7 個(gè) RTT。如下圖:
圖 2 HTTPS 首次請(qǐng)求對(duì)訪(fǎng)問(wèn)速度的影響
HTTPS 首次請(qǐng)求需要的網(wǎng)絡(luò)耗時(shí)解釋如下:
1, 三次握手建立 TCP 連接。耗時(shí)一個(gè) RTT。
2, 使用 HTTP 發(fā)起 GET 請(qǐng)求,服務(wù)端返回 302 跳轉(zhuǎn)到 https://www.baidu.com。需要一個(gè) RTT 以及 302 跳轉(zhuǎn)延時(shí)。
a) 大部分情況下用戶(hù)不會(huì)手動(dòng)輸入 https://www.baidu.com 來(lái)訪(fǎng)問(wèn) HTTPS,服務(wù)端只能返回 302 強(qiáng)制瀏覽器跳轉(zhuǎn)到 https。
b) 瀏覽器處理 302 跳轉(zhuǎn)也需要耗時(shí)。
3, 三次握手重新建立 TCP 連接。耗時(shí)一個(gè) RTT。
a) 302 跳轉(zhuǎn)到 HTTPS 服務(wù)器之后,由于端口和服務(wù)器不同,需要重新完成三次握手,建立 TCP 連接。
4, TLS 完全握手階段一。耗時(shí)至少一個(gè) RTT。
a) 這個(gè)階段主要是完成加密套件的協(xié)商和證書(shū)的身份認(rèn)證。
b) 服務(wù)端和瀏覽器會(huì)協(xié)商出相同的密鑰交換算法、對(duì)稱(chēng)加密算法、內(nèi)容一致性校驗(yàn)算法、證書(shū)簽名算法、橢圓曲線(xiàn)(非 ECC 算法不需要)等。
c) 瀏覽器獲取到證書(shū)后需要校驗(yàn)證書(shū)的有效性,比如是否過(guò)期,是否撤銷(xiāo)。
5, 解析 CA 站點(diǎn)的 DNS。耗時(shí)一個(gè) RTT。
a) 瀏覽器獲取到證書(shū)后,有可能需要發(fā)起 OCSP 或者 CRL 請(qǐng)求,查詢(xún)證書(shū)狀態(tài)。
b) 瀏覽器首先獲取證書(shū)里的 CA 域名。
c) 如果沒(méi)有命中緩存,瀏覽器需要解析 CA 域名的 DNS。
6, 三次握手建立 CA 站點(diǎn)的 TCP 連接。耗時(shí)一個(gè) RTT。
a) DNS 解析到 IP 后,需要完成三次握手建立 TCP 連接。
7, 發(fā)起 OCSP 請(qǐng)求,獲取響應(yīng)。耗時(shí)一個(gè) RTT。
8, 完全握手階段二,耗時(shí)一個(gè) RTT 及計(jì)算時(shí)間。
a) 完全握手階段二主要是密鑰協(xié)商。
9, 完全握手結(jié)束后,瀏覽器和服務(wù)器之間進(jìn)行應(yīng)用層(也就是 HTTP)數(shù)據(jù)傳輸。
當(dāng)然不是每個(gè)請(qǐng)求都需要增加 7 個(gè) RTT 才能完成 HTTPS 首次請(qǐng)求交互。大概只有不到 0.01% 的請(qǐng)求才有可能需要經(jīng)歷上述步驟,它們需要滿(mǎn)足如下條件:
1, 必須是首次請(qǐng)求。即建立 TCP 連接后發(fā)起的第一個(gè)請(qǐng)求,該連接上的后續(xù)請(qǐng)求都不需要再發(fā)生上述行為。
2, 必須要發(fā)生完全握手,而正常情況下 80% 的請(qǐng)求能實(shí)現(xiàn)簡(jiǎn)化握手。
3, 瀏覽器需要開(kāi)啟 OCSP 或者 CRL 功能。Chrome 默認(rèn)關(guān)閉了 ocsp 功能,firefox 和 IE 都默認(rèn)開(kāi)啟。
4, 瀏覽器沒(méi)有命中 OCSP 緩存。Ocsp 一般的更新周期是 7 天,firefox 的查詢(xún)周期也是 7 天,也就說(shuō)是 7 天中才會(huì)發(fā)生一次 ocsp 的查詢(xún)。
5, 瀏覽器沒(méi)有命中 CA 站點(diǎn)的 DNS 緩存。只有沒(méi)命中 DNS 緩存的情況下才會(huì)解析 CA 的 DNS。
上節(jié)還只是簡(jiǎn)單描述了 HTTPS 關(guān)鍵路徑上必須消耗的純網(wǎng)絡(luò)耗時(shí),沒(méi)有包括非常消耗 CPU 資源的計(jì)算耗時(shí),事實(shí)上計(jì)算耗時(shí)也不小(30ms 以上),從瀏覽器和服務(wù)器的角度分別介紹一下:
1, 瀏覽器計(jì)算耗時(shí)
a) RSA 證書(shū)簽名校驗(yàn),瀏覽器需要解密簽名,計(jì)算證書(shū)哈希值。如果有多個(gè)證書(shū)鏈,瀏覽器需要校驗(yàn)多個(gè)證書(shū)。
b) RSA 密鑰交換時(shí),需要使用證書(shū)公鑰加密 premaster。耗時(shí)比較小,但如果手機(jī)性能比較差,可能也需要 1ms 的時(shí)間。
c) ECC 密鑰交換時(shí),需要計(jì)算橢圓曲線(xiàn)的公私鑰。
d) ECC 密鑰交換時(shí),需要使用證書(shū)公鑰解密獲取服務(wù)端發(fā)過(guò)來(lái)的 ECC 公鑰。
e) ECC 密鑰交換時(shí),需要根據(jù)服務(wù)端公鑰計(jì)算 master key。
f) 應(yīng)用層數(shù)據(jù)對(duì)稱(chēng)加解密。
g) 應(yīng)用層數(shù)據(jù)一致性校驗(yàn)。
2, 服務(wù)端計(jì)算耗時(shí)
a) RSA 密鑰交換時(shí)需要使用證書(shū)私鑰解密 premaster。這個(gè)過(guò)程非常消耗性能。
b) ECC 密鑰交換時(shí),需要計(jì)算橢圓曲線(xiàn)的公私鑰。
c) ECC 密鑰交換時(shí),需要使用證書(shū)私鑰加密 ECC 的公鑰。
d) ECC 密鑰交換時(shí),需要根據(jù)瀏覽器公鑰計(jì)算共享的 master key。
e) 應(yīng)用層數(shù)據(jù)對(duì)稱(chēng)加解密。
f) 應(yīng)用層數(shù)據(jù)一致性校驗(yàn)。
由于客戶(hù)端的 CPU 和操作系統(tǒng)種類(lèi)比較多,所以計(jì)算耗時(shí)不能一概而論。手機(jī)端的 HTTPS 計(jì)算會(huì)比較消耗性能,單純計(jì)算增加的延遲至少在 50ms 以上。PC 端也會(huì)增加至少 10ms 以上的計(jì)算延遲。
服務(wù)器的性能一般比較強(qiáng),但由于 RSA 證書(shū)私鑰長(zhǎng)度遠(yuǎn)大于客戶(hù)端,所以服務(wù)端的計(jì)算延遲也會(huì)在 5ms 以上。
安全性方面
在目前的技術(shù)背景下,HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,主要有以下幾個(gè)好處:
1、使用HTTPS協(xié)議可認(rèn)證用戶(hù)和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶(hù)機(jī)和服務(wù)器;
2、HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過(guò)程中不被竊取、改變,確保數(shù)據(jù)的完整性。
3、HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對(duì)安全,但它大幅增加了中間人攻擊的成本。
技術(shù)方面
1、相同網(wǎng)絡(luò)環(huán)境下,HTTPS協(xié)議會(huì)使頁(yè)面的加載時(shí)間延長(zhǎng)近50%,增加10%到20%的耗電。此外,HTTPS協(xié)議還會(huì)影響緩存,增加數(shù)據(jù)開(kāi)銷(xiāo)和功耗。
2、HTTPS協(xié)議的安全是有范圍的,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。
3、最關(guān)鍵的,SSL 證書(shū)的信用鏈體系并不安全。特別是在某些國(guó)家可以控制 CA 根證書(shū)的情況下,中間人攻擊一樣可行。
成本方面
1、SSL的專(zhuān)業(yè)證書(shū)需要購(gòu)買(mǎi),功能越強(qiáng)大的證書(shū)費(fèi)用越高。個(gè)人網(wǎng)站、小網(wǎng)站可以選擇入門(mén)級(jí)免費(fèi)證書(shū)。
2、SSL 證書(shū)通常需要綁定 固定IP,為服務(wù)器增加固定IP會(huì)增加一定費(fèi)用;
3、HTTPS 連接服務(wù)器端資源占用高較高多,相同負(fù)載下會(huì)增加帶寬和服務(wù)器投入成本;
既然HTTPS有這么多缺點(diǎn),那是不是就不該做呢,當(dāng)然不是的,隨著技術(shù)的發(fā)展很多缺點(diǎn)是可以?xún)?yōu)化和彌補(bǔ)的。比如:
打開(kāi)速度問(wèn)題完全可以通過(guò)CDN加速解決,很多IDC也在著手推出免費(fèi)證書(shū)和一站式HTTPS搭建服務(wù),HTTPS成本在未來(lái)將會(huì)大大縮小!
調(diào)研中發(fā)現(xiàn),大多數(shù)人對(duì)HTTPS持觀(guān)望態(tài)度,他們對(duì)HTTPS安全性是認(rèn)可的,但是從各個(gè)層面進(jìn)行考慮后,做出了目前不做HTTPS網(wǎng)站的決定,主要有以下兩種觀(guān)點(diǎn):
正方觀(guān)點(diǎn)
1、HTTPS具有更好的加密性能,避免用戶(hù)信息泄露;
2、HTTPS復(fù)雜的傳輸方式,降低網(wǎng)站被劫持的風(fēng)險(xiǎn);
3、搜索引擎已經(jīng)全面支持HTTPS抓取、收錄,并且會(huì)優(yōu)先展示HTTPS結(jié)果;
4、從安全角度來(lái)說(shuō)個(gè)人覺(jué)得要做HTTPS,不過(guò)HTTPS可以采用登錄后展示;
5、HTTPS綠鎖表示可以提升用戶(hù)對(duì)網(wǎng)站信任程度;
6、基礎(chǔ)成本可控,證書(shū)及服務(wù)器已經(jīng)有了成型的支持方案;
7、網(wǎng)站加載速度可以通過(guò)cdn等方式進(jìn)行彌補(bǔ),但是安全不能忽略;
8、HTTPS是網(wǎng)絡(luò)的發(fā)展趨勢(shì),早晚都要做;
9、可以有效防止山寨、鏡像網(wǎng)站;
反方觀(guān)點(diǎn)
1、HTTPS會(huì)降低用戶(hù)訪(fǎng)問(wèn)速度,增加網(wǎng)站服務(wù)器的計(jì)算資源消耗;
2、目前搜索引擎只是收錄了小部分HTTPS內(nèi)容,應(yīng)該保持觀(guān)望制度;
3、HTTPS需要申請(qǐng)加密協(xié)議,增加了運(yùn)營(yíng)成本;
4、百度目前對(duì)HTTPS的優(yōu)先展現(xiàn)效果不明顯,谷歌較為明顯;
5、技術(shù)門(mén)檻較高,無(wú)從下手;
6、目前站點(diǎn)不涉及私密信息,無(wú)需HTTPS;
7、兼容性有待提升,如robots不支持/聯(lián)盟廣告不支持等;
8、HTTPS網(wǎng)站的安全程度有限,該被黑還是被黑;
9、HTTPS維護(hù)比較麻煩,在搜索引擎支持HTTP的情況,沒(méi)必要做HTTPS;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。