大型網站的HTTPS實踐(三)——HTTPS對效能的影響
前言
HTTPS在保護使用者隱私,防止流量劫持方面發揮著非常關鍵的作用,但與此同時,HTTPS也會降低使用者訪問速度,增加網站伺服器的計算資源消耗。本文主要介紹HTTPS對效能的影響。
HTTPS對訪問速度的影響
在介紹速度優化策略之前,先來看下HTTPS對速度有什麼影響。影響主要來自兩方面:協議互動所增加的網路RTT(round trip time)和加解密相關的計算耗時。下面分別介紹一下。
1網路耗時增加
由於HTTP和HTTPS都需要DNS解析,並且大部分情況下使用了DNS快取,為了突出對比效果,忽略主域名的DNS解析時間。
使用者使用HTTP協議訪問http://www.baidu.com(或者www.baidu.com)時會有如下網路上的互動耗時:
圖1 HTTP首個請求的網路耗時
可見,使用者只需要完成TCP三次握手建立TCP連線就能夠直接傳送HTTP請求獲取應用層資料,此外在整個訪問過程中也沒有需要消耗計算資源的地方。
接下來看HTTPS的訪問過程,相比HTTP要複雜很多,在部分場景下,使用HTTPS訪問有可能增加7個RTT。如下圖:
圖2 HTTPS首次請求對訪問速度的影響
HTTPS首次請求需要的網路耗時解釋如下:
三次握手建立TCP連線。耗時一個RTT。
使用HTTP發起GET請求,服務端返回302跳轉到https://www.baidu.com。需要一個RTT以及302跳轉延時。
大部分情況下使用者不會手動輸入https://www.baidu.com來訪問HTTPS,服務端只能返回302強制瀏覽器跳轉到HTTPS。
瀏覽器處理302跳轉也需要耗時。
三次握手重新建立TCP連線。耗時一個RTT。
302跳轉到HTTPS伺服器之後,由於埠和伺服器不同,需要重新完成三次握手,建立TCP連線。
TLS完全握手階段一。耗時至少一個RTT。
這個階段主要是完成加密套件的協商和證書的身份認證。
服務端和瀏覽器會協商出相同的金鑰交換演算法、對稱加密演算法、內容一致性校驗演算法、證書籤名演算法、橢圓曲線(非ECC演算法不需要)等。
瀏覽器獲取到證書後需要校驗證書的有效性,比如是否過期,是否撤銷。
解析CA站點的DNS。耗時一個RTT。
瀏覽器獲取到證書後,有可能需要發起OCSP或者CRL請求,查詢證書狀態。
瀏覽器首先獲取證書裡的CA域名。
如果沒有命中快取,瀏覽器需要解析CA域名的DNS。
三次握手建立CA站點的TCP連線。耗時一個RTT。
DNS解析到IP後,需要完成三次握手建立TCP連線。
發起OCSP請求,獲取響應。耗時一個RTT。
完全握手階段二,耗時一個RTT及計算時間。
完全握手階段二主要是金鑰協商。
完全握手結束後,瀏覽器和伺服器之間進行應用層(也就是HTTP)資料傳輸。
當然不是每個請求都需要增加7個RTT才能完成HTTPS首次請求互動。大概只有不到0.01%的請求才有可能需要經歷上述步驟,它們需要滿足如下條件:
必須是首次請求。即建立TCP連線後發起的第一個請求,該連線上的後續請求都不需要再發生上述行為。
必須要發生完全握手,而正常情況下80%的請求能實現簡化握手。
瀏覽器需要開啟OCSP或者CRL功能。Chrome預設關閉了OCSP功能,Firefox和IE都預設開啟。
瀏覽器沒有命中OCSP快取。OCSP一般的更新週期是7天,Firefox的查詢週期也是7天,也就說是7天中才會發生一次OCSP的查詢。
瀏覽器沒有命中CA站點的DNS快取。只有沒命中DNS快取的情況下才會解析CA的DNS。
2計算耗時增加
上節還只是簡單描述了HTTPS關鍵路徑上必須消耗的純網路耗時,沒有包括非常消耗CPU資源的計算耗時,事實上計算耗時也不小(30ms以上),從瀏覽器和伺服器的角度分別介紹一下:
瀏覽器計算耗時
RSA證書籤名校驗,瀏覽器需要解密簽名,計算證書雜湊值。如果有多個證書鏈,瀏覽器需要校驗多個證書。
RSA金鑰交換時,需要使用證書公鑰加密premaster。耗時比較小,但如果手機效能比較差,可能也需要1ms的時間。
ECC金鑰交換時,需要計算橢圓曲線的公私鑰。
ECC金鑰交換時,需要使用證書公鑰解密獲取服務端發過來的ECC公鑰。
ECC金鑰交換時,需要根據服務端公鑰計算master key。
應用層資料對稱加解密。
應用層資料一致性校驗。
服務端計算耗時
RSA金鑰交換時需要使用證書私鑰解密premaster。這個過程非常消耗效能。
ECC金鑰交換時,需要計算橢圓曲線的公私鑰。
ECC金鑰交換時,需要使用證書私鑰加密ECC的公鑰。
ECC金鑰交換時,需要根據瀏覽器公鑰計算共享的master key。
應用層資料對稱加解密。
應用層資料一致性校驗。
由於客戶端的CPU和作業系統種類比較多,所以計算耗時不能一概而論。手機端的HTTPS計算會比較消耗效能,單純計算增加的延遲至少在50ms以上。PC端也會增加至少10ms以上的計算延遲。
伺服器的效能一般比較強,但由於RSA證書私鑰長度遠大於客戶端,所以服務端的計算延遲也會在5ms以上。總 結HTTPS在保證資料安全性的同時,對服務效能也造成了一些影響。在本文中,我們著重介紹了HTTPS從網路耗時和加密解密兩方面對於服務效能的影響。在下一篇系列文章中,我們將為大家帶來百度在減小HTTPS對效能影響方面的方法和經驗。
文章整理自百度HTTPS技術聯合團隊
↓↓↓ 點選"閱讀原文" 【瞭解更多精彩內容】
相關文章
- 大型網站的HTTPS實踐(一)——HTTPS協議和原理網站HTTP協議
- 大型網站的HTTPS實踐(二)——HTTPS加密演算法介紹網站HTTP加密演算法
- 中科三方:設定SSL證書升級HTTPS對網站最佳化有哪些影響?HTTP網站
- HTTP和HTTPS有什麼區別?如何實現網站的HTTPS?HTTP網站
- 給自己的網站加上HTTPS網站HTTP
- 網站實現HTTPS的詳細流程介紹網站HTTP
- 小程式https請求,http網站升到httpsHTTP網站
- 什麼是https?網站啟動https的好處有哪些?HTTP網站
- HTTPS安全最佳實踐HTTP
- 你的網站還沒用上 HTTPS 嗎網站HTTP
- 我的網站HTTPS改造全程詳解網站HTTP
- 如何獲取網站的HTTPS證書?網站HTTP
- 網站實現https加密比http的優勢有哪些網站HTTP加密
- 使用Let’s Encrypt實現網站https化網站HTTP
- 如何免費的讓網站啟用HTTPS網站HTTP
- Nginx配置網站預設httpsNginx網站HTTP
- DB2 HADR對效能的影響DB2
- Windows平臺Nginx部署https網站的過程WindowsNginxHTTP網站
- win2003 https 網站的圖文配置教程HTTP網站
- 【社群話題分享】你的網站 HTTPS 了嗎?網站HTTP
- 海外代理IP地址對網站SEO的影響和作用網站
- 網線的分類與對網速的影響 網線對網速影響大嗎?
- 如何將自己的網站從 HTTP 的轉換為 HTTPS 的網站HTTP
- 是時候來了解下 HTTPS 網站的部署了HTTP網站
- 安裝SSL證書的網站如何實現HTTP重定向到HTTPS網站HTTP
- 虛擬主機對網站有哪些影響?網站
- 從一次效能優化看https的效能優化HTTP
- 如何讓HTTPS站點評級達到A+? 還得看這篇HTTPS安全優化配置最佳實踐指南HTTP優化
- 【知識分享】伺服器不穩定對網站的影響伺服器網站
- 如何部署HTTPS站點HTTP
- 訪問 HTTPS 網站時的 SSL 錯誤解決方案HTTP網站
- 分支對程式碼效能的影響和優化優化
- 怎麼減少行鎖對效能的影響?
- 全站HTTPS升級系列(三)nginx配置全站HTTPSHTTPNginx
- 影響網站權重的幾大因素網站
- Java中的Exception拋異常對效能的影響 - BaeldungJavaException
- 怎麼給網站配置SSL證書(https)網站HTTP
- 容器化對資料庫的效能有影響嗎?資料庫