HTTPS 協議就是 HTTP+SSL/TLS,即在 HTTP 基礎上加入 SSL /TLS 層,提供了內容加密、身份認證和數據完整性3大功能,目的就是為了加密數據,用於安全的數據傳輸。
HTTPS 通過3大功能增加了數據傳輸安全,但同時也給Web性能優化帶來了新的挑戰。
- HTTPS降低用戶訪問速度(需多次握手)
- 網站改用 HTTPS 以后,由 HTTP 跳轉到 HTTPS 的方式增加了用戶訪問耗時(多數網站采用 301、302 跳轉)
- HTTPS 涉及到的安全算法會消耗 CPU 資源,需要增加服務器資源(https 訪問過程需要加解密)
HTTP跳轉至HTTPS交互過程解析
1. 用戶在瀏覽器里輸入 http://www.domain.com/1213.gif 點擊回車以后,瀏覽器與服務器發生三次握手;
2. 服務器收到用戶的請求,響應 301 狀態碼,讓用戶跳轉到 HTTPS ,重新請求 https://www.domain.com/1213.gif;
3. 用戶重新發起 HTTPS 請求,再次與服務器進行三次 TCP 握手;
4. TCP 握手成功后,瀏覽器開始與服務器進行 TLS 握手。HSTS重定向技術
又拍雲采用了 HSTS(HTTP Strict Transport Security)技術,啟用HSTS后,將保證瀏覽器始終連接到網站的 HTTPS 加密版本。
1. 用戶在瀏覽器里輸入 HTTP 協議進行訪問時,瀏覽器會自動將 HTTP 轉換為 HTTPS 進行訪問,確保用戶訪問安全;
2. 省去301跳轉的出現,縮短訪問時間;
3. 能阻止基於 SSL Strip 的中間人攻擊,萬一證書有錯誤,則顯示錯誤,用戶不能回避警告,從而能夠更加有效安全的保障用戶的訪問。
TLS握手優化
在傳輸應用數據之前,客戶端必須與服務端協商密鑰、加密算法等信息,服務端還要把自己的證書發給客戶端表明其身份,這些環節構成 TLS 握手過程。
TLS False Start 功能
又拍雲采用了 False Start (搶先開始)技術,瀏覽器在與服務器完成 TLS 握手前,就開始發送請求數據,服務器在收到這些數據后,完成 TLS 握手的同時,開始發送響應數據。
開啟 False Start 功能后,數據傳輸時間講進一步縮短。
Session Identifier(會話標識符)復用
如果用戶的一個業務請求包含了多條的加密流,客戶端與服務器將會反復握手,必定會導致更多的時間損耗。或者某些特殊情況導致了對話突然中斷,雙方就需要重新握手,增加了用戶訪問時間。
因此又拍雲提供了 Session Identifier(會話標識符)復用功能
(1)服務器為每一次的會話都生成並記錄一個 ID 號,然后發送給客戶端;
(2)如果客戶端發起重新連接,則只要向服務器發送該 ID 號;
(3)服務器收到客戶端發來的 ID 號,然后查找自己的會話記錄,匹配 ID 之后,雙方就可以重新使用之前的對稱加密秘鑰進行數據加密傳輸,而不必重新生成,減少交互時間。
因此又可以進一步降低客戶端的訪問時間,提升用戶的訪問體驗。又拍雲已默認開啟此功能,無需特殊配置,抓包如下圖所示:
開啟OSCP Stapling,提高TLS握手效率
采用OCSP Stapling ,提升 HTTPS 性能。服務端主動獲取 OCSP 查詢結果並隨着證書一起發送給客戶端,從而客戶端可直接通過 Web Server 驗證證書,提高 TLS 握手效率。
由又拍雲服務器模擬瀏覽器向 CA 發起請求,並將帶有 CA 機構簽名的 OCSP 響應保存到本地,然后在與客戶端握手階段,將 OCSP 響應下發給瀏覽器,省去瀏覽器的在線驗證過程。由於瀏覽器不需要直接向 CA 站點查詢證書狀態,這個功能對訪問速度的提升非常明顯。
完全前向加密PFS,保護用戶數據,預防私鑰泄漏
非對稱加密算法 RSA,包含了公鑰、私鑰,其中私鑰是保密不對外公開的,由於此算法既可以用於加密也可以用於簽名,所以用途甚廣,但是還是會遇到一些問題:
(1) 假如我是一名黑客,雖然現在我不知道私鑰,但是我可以先把客戶端與服務器之前的傳輸數據(已加密)全部保存下來
(2)如果某一天,服務器維護人員不小心把私鑰泄露了,或者服務器被我攻破獲取到了私鑰
(3)那我就可以利用這個私鑰,破解掉之前已被我保存的數據,從中獲取有用的信息
所以為了防止上述現象發生,我們必須保護好自己的私鑰。
但如果私鑰確實被泄漏了,那我們改如何補救呢?那就需要PFS(perfect forward secrecy)完全前向保密功能,此功能用於客戶端與服務器交換對稱密鑰,起到前向保密的作用,也即就算私鑰被泄漏,黑客也無法破解先前已加密的數據。
實現此功能需要服務器支持以下算法和簽名組合:
(1)ECDHE 密鑰交換、RSA 簽名;
(2)ECDHE 密鑰交換、ECDSA 簽名;
又拍雲已默認支持上述組合,無需特殊配置,抓包如下圖所示:
HTTP/2協議支持
HTTP/2 是在 HTTPS 協議的基礎上實現的,所以只要使用又拍雲 HTTPS 加速服務的域名,都可免費享受 HTTP/2 服務,無需做任何特殊配置。全平台支持默認開啟 HTTP/2.0 , 無縫兼容各瀏覽器及服務器。