百度在2015年即完成HTTPS改造,那大型網(wǎng)站的HTTPS改造中都有哪些實踐經(jīng)驗,相信這是很多站長都想知道的,那么下面小編就為大家總結(jié)一下。
百度在2015年即完成HTTPS改造,那大型網(wǎng)站的HTTPS改造中都有哪些實踐經(jīng)驗,相信這是很多站長都想知道的,那么下面小編就為大家總結(jié)一下:
1 前言
HTTPS 在保護用戶隱私,防止流量劫持方面發(fā)揮著非常關(guān)鍵的作用,但與此同時,HTTPS 也會降低用戶訪問速度,增加
網(wǎng)站服務器的計算資源消耗。
本文主要介紹 https 對用戶體驗的影響。
2 HTTPS 對訪問速度的影響
在介紹速度優(yōu)化策略之前,先來看下 HTTPS 對速度有什么影響。影響主要來自兩方面:
協(xié)議交互所增加的網(wǎng)絡 RTT(round trip time)。
加解密相關(guān)的計算耗時。
下面分別介紹一下。
2.1 網(wǎng)絡耗時增加
由于 HTTP 和 HTTPS 都需要 DNS 解析,并且大部分情況下使用了 DNS 緩存,為了突出對比效果,忽略主
域名的 DNS 解析時間。
用戶使用 HTTP 協(xié)議訪問https://www.baidu
.com(或者 www.baidu.com) 時會有如下網(wǎng)絡上的交互耗時:
2.2 計算耗時增加
上節(jié)還只是簡單描述了 HTTPS 關(guān)鍵路徑上必須消耗的純網(wǎng)絡耗時,沒有包括非常消耗 CPU 資源的計算耗時,事實上計算耗時也不小(30ms 以上),從瀏覽器和服務器的角度分別介紹一下:
1, 瀏覽器計算耗時
a) RSA 證書簽名校驗,瀏覽器需要解密簽名,計算證書哈希值。如果有多個證書鏈,瀏覽器需要校驗多個證書。
b) RSA 密鑰交換時,需要使用證書公鑰加密 premaster。耗時比較小,但如果手機性能比較差,可能也需要 1ms 的時間。
c) ECC 密鑰交換時,需要計算橢圓曲線的公私鑰。
d) ECC 密鑰交換時,需要使用證書公鑰解密獲取服務端發(fā)過來的 ECC 公鑰。
e) ECC 密鑰交換時,需要根據(jù)服務端公鑰計算 master key。
f) 應用層數(shù)據(jù)對稱加解密。
g) 應用層數(shù)據(jù)一致性校驗。
2, 服務端計算耗時
a) RSA 密鑰交換時需要使用證書私鑰解密 premaster。這個過程非常消耗性能。
b) ECC 密鑰交換時,需要計算橢圓曲線的公私鑰。
c) ECC 密鑰交換時,需要使用證書私鑰加密 ECC 的公鑰。
d) ECC 密鑰交換時,需要根據(jù)瀏覽器公鑰計算共享的 master key。
e) 應用層數(shù)據(jù)對稱加解密。
f) 應用層數(shù)據(jù)一致性校驗。
由于客戶端的 CPU 和操作系統(tǒng)種類比較多,所以計算耗時不能一概而論。手機端的 HTTPS 計算會比較消耗性能,單純計算增加的延遲至少在 50ms 以上。PC 端也會增加至少 10ms 以上的計算延遲。
服務器的性能一般比較強,但由于 RSA 證書私鑰長度遠大于客戶端,所以服務端的計算延遲也會在 5ms 以上。