一文完全搞懂https傳輸過程

一. http與https區別

HTTP:是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可使瀏覽器更加高效,使網絡傳輸減小。算法

HTTPS:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。(能夠理解爲瀏覽器

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

HTTPS和HTTP的區別主要以下:服務器

  • HTTP 明文傳輸,數據未加密,安全性較差。https數據傳輸過程加密
  • 使用 HTTPS 協議須要到 CA 申請證書,通常免費證書較少,於是須要必定費用。
  • HTTP 頁面響應速度比 HTTPS 快,主要是由於 HTTP 使用 TCP 三次握手創建鏈接,客戶端和服務器須要交換 3 個包,而 HTTPS除了 TCP 的三個包,還要加上 ssl 握手須要的 9 個包,所共12 個包。
  • http 和 https 使用徹底不一樣的鏈接方式,http的鏈接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議。端口也不同,前者是 80,後者是 443。
  • HTTPS 建構在 SSL/TLS 之上的 HTTP 協議,更耗費服務器資源。

二. https傳輸的具體過程

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

TLS 的完整過程須要三個算法(協議),密鑰交互算法,對稱加密算法,和消息認證算法網站

HTTPS 的總體過程分爲證書驗證和數據傳輸階段加密

  1. 證書驗證階段:
  • 瀏覽器發起 HTTPS 請求。( TLS 握手請求)
  • 服務端返回 證書(包含服務器公鑰S_PuKey)、對稱加密算法種類及其餘相關信息。
  • 客戶端驗證證書是否合法,若是不合法則提示告警。
  1. 數據傳輸階段:
  • 當證書驗證合法後,在本地生成隨機數。
  • 經過公鑰加密隨機數,並把加密後的隨機數傳輸到服務端。
  • 服務端經過私鑰對隨機數進行解密。
  • 服務端經過客戶端傳入的隨機數構造對稱加密算法,以後的數據交互經過對稱加密算法進行加解密。(對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法)

服務器利用本身惟一的私鑰對客戶端發來的對稱祕鑰進行解密,在此過程當中,中間方沒法對其解密(即便是客戶端也沒法解密,由於只有服務器端擁有惟一的私鑰),保證了對稱祕鑰在收發過程當中的安全,此時,服務器端和客戶端擁有了一套徹底相同的對稱祕鑰。代理

最後,總結一下https傳輸過程:
1.客戶端發起 HTTPS 請求,服務端返回證書,客戶端對證書進行驗證,驗證經過後本地生成用於構造對稱加密算法的隨機數。
2.經過證書中的公鑰對隨機數進行加密傳輸到服務端(隨機對稱密鑰),服務端接收後經過私鑰解密獲得隨機對稱密鑰,以後的數據交互經過對稱加密算法進行加解密。(既有對稱加密,也有非對稱加密)ssl

常見問題

爲何數據傳輸是用對稱加密?資源

答:HTTP的應用場景中一般端與端之間存在大量的交互,非對稱加密的加解密效率很是低。
另外,在 HTTPS的場景中只有服務端保存了私鑰,一對公私鑰只能實現單向的加解密,因此 HTTPS 中內容傳輸加密採起的是對稱加密

爲何須要證書?
答:防止「中間人」攻擊,同時能夠爲網站提供身份證實。

使用 HTTPS 會被抓包嗎?答:會被抓包,HTTPS 只防止用戶在不知情的狀況下通訊被監聽,若是用戶主動授信,是能夠構建「中間人」網絡,代理軟件能夠對傳輸內容進行解密。

相關文章
相關標籤/搜索