不可遺漏的知識點----你應該知道的https

不可遺漏的知識點----你應該知道的https

基本概念

HTTP:超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,所以,HTTP協議不適合傳輸一些敏感信息,好比:信用卡號、密碼等支付信息。瀏覽器

HTTPS:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL(SSL記錄協議[SSL Record Protocol]),所以加密的詳細內容就須要SSL。安全

HTTPS協議的主要做用能夠分爲兩種:一種是創建一個信息安全通道,來保證數據傳輸的安全;另外一種就是確認網站的真實性。性能優化

HTTPS和HTTP的區別

不可遺漏的知識點----你應該知道的https

1. https協議須要到ca申請證書,通常免費證書較少,於是須要必定費用。服務器

2. http是超文本傳輸協議,信息是明文傳輸,https則是具備安全性的ssl加密傳輸協議。網絡

3. http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。session

4. http的鏈接很簡單,是無狀態的;併發

5. HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。性能

HTTPS最大的特色

HTTPS最大的特色是安全, 在保護用戶隱私,防止流量劫持方面發揮着很是關鍵的做用。主要有如下3點:優化

  1. 內容加密。瀏覽器到百度服務器的內容都是以加密形式傳輸,中間者沒法直接查看原始內容。
  2. 身份認證。保證用戶訪問的是百度服務,即便被 DNS 劫持到了第三方站點,也會提醒用戶沒有訪問百度服務,有可能被劫持
  3. 數據完整性。防止內容被第三方冒充或者篡改。

HTTPS的缺點

一、證書費用以及更新維護。網站

二、HTTPS 下降必定用戶訪問速度(實際上優化好就不是缺點了)。

三、HTTPS 消耗 CPU 資源,須要增長大量機器。

HTTPS 網絡訪問過程

http協議下,用戶只須要完成 TCP 三次握手創建 TCP 鏈接就可以直接發送 HTTP 請求獲取應用層數據,此外在整個訪問過程當中也沒有須要消耗計算資源的地方。

HTTPS 的訪問過程,相比 HTTP 要複雜不少,在部分場景下,使用 HTTPS 訪問有可能增長 7 個 RTT。


不可遺漏的知識點----你應該知道的https


  1. 三次握手創建 TCP 鏈接。耗時一個 RTT。
  2. 使用 HTTP 發起 GET 請求,服務端返回 302 跳轉到 https://www.baidu.com 。須要一個 RTT 以及 302 跳轉延時。
  3. 三次握手從新創建 TCP 鏈接。耗時一個 RTT。
  4. TLS 徹底握手階段一。耗時至少一個 RTT。
  5. 解析 CA 站點的 DNS。耗時一個 RTT。
  6. 三次握手創建 CA 站點的 TCP 鏈接。耗時一個 RTT。
  7. 發起 OCSP 請求,獲取響應。耗時一個 RTT。
  8. 徹底握手階段二,耗時一個 RTT 及計算時間。
  9. 徹底握手結束後,瀏覽器和服務器之間進行應用層(也就是 HTTP)數據傳輸。

固然不是每一個請求都須要增長 7 個 RTT 才能完成 HTTPS 首次請求交互。大概只有不到 0.01% 的請求才有可能須要經歷上述步驟。

HTTPS的性能優化

主要優化兩方面,訪問速度和計算性能。

HTTPS 訪問速度優化

  1. 設置HSTS,服務端返回一個 HSTS 的 http header,瀏覽器獲取到 HSTS 頭部以後,在一段時間內,無論用戶輸入www.baidu.com仍是http://www.baidu.com,都會默認將請求內部跳轉成https://www.baidu.com。Chrome, firefox, ie 都支持了 HSTS。
  2. Session resume,複用session能夠減小 CPU 消耗,由於不須要進行非對稱密鑰交換的計算。能夠提高訪問速度,不須要進行徹底握手階段二,節省了一個 RTT 和計算耗時。複用有2種方式,Session cache和Session ticket。
  3. Nginx設置Ocsp stapling。Ocsp 全稱在線證書狀態檢查協議 (rfc6960),用來向 CA 站點查詢證書狀態,好比是否撤銷。一般狀況下,瀏覽器使用 OCSP 協議發起查詢請求,CA 返回證書狀態內容,而後瀏覽器接受證書是否可信的狀態。這個過程很是消耗時間,由於 CA 站點有可能在國外,網絡不穩定,RTT 也比較大。若是不須要查詢則可節約時間。
  4. 使用 SPDY 或者 HTTP2。SPDY 最大的特性就是多路複用,能將多個 HTTP 請求在同一個鏈接上一塊兒發出去,不像目前的 HTTP 協議同樣,只能串行地逐個發送請求。Pipeline 雖然支持多個請求一塊兒發送,可是接收時依然得按照順序接收,本質上沒法解決併發的問題。HTTP2支持多路複用,有一樣的效果。
  5. False start。簡單歸納 False start 的原理就是在 client
    key
    exchange 發出時將應用層數據一塊兒發出來,可以節省一個 RTT。

HTTPS 計算性能優化

  1. 優先使用 ECC橢圓加密算術。
  2. 使用最新版的 openssl。
  3. 硬件加速方案。
  4. TLS 遠程代理計算
相關文章
相關標籤/搜索