前端筆記 — http與https

一. 定義

1.什么是HTTP?

HyperText Transfer Protocol,超文本傳輸協(xié)議,它是TCP/IP協(xié)議的一個(gè)應(yīng)用層協(xié)議,用來定義客戶端與服務(wù)端通訊的格式

2.什么是HTTPS?

HTTPS是HTTP的安全版,即在應(yīng)用層HTTP與傳輸層TCP之間多了一層加密層TLS/SSL。普通的HTTP通信,會(huì)直接將明文數(shù)據(jù)給到TCP進(jìn)行傳輸,而HTTPS會(huì)先將數(shù)據(jù)給到TLS/SSL進(jìn)行加密,然后將加密后的數(shù)據(jù)給到TCP進(jìn)行通信

二. HTTP與HTTPS的區(qū)別

  1. https協(xié)議需要到ca申請證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。
  2. http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。
  3. http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
  4. http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。

三. HTTPS的工作原理

  1. 客戶使用https的URL訪問Web服務(wù)器,要求與Web服務(wù)器建立SSL連接。
  2. Web服務(wù)器收到客戶端請求后,會(huì)將網(wǎng)站的證書信息(證書中包含公鑰)傳送一份給客戶端。
  3. 客戶端的瀏覽器與Web服務(wù)器開始協(xié)商SSL連接的安全等級(jí),也就是信息加密的等級(jí)。
  4. 客戶端的瀏覽器根據(jù)雙方同意的安全等級(jí),建立會(huì)話密鑰,然后利用網(wǎng)站的公鑰將會(huì)話密鑰加密,并傳送給網(wǎng)站。
  5. Web服務(wù)器利用自己的私鑰解密出會(huì)話密鑰。
  6. Web服務(wù)器利用會(huì)話密鑰加密與客戶端之間的通信。

四. HTTPS的優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn):
  • 使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
  • 由SSL+HTTP進(jìn)行加密傳輸,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性。
  • HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
2.缺點(diǎn)
  • HTTPS協(xié)議握手階段比較費(fèi)時(shí),會(huì)使頁面的加載時(shí)間延長近50%;
  • HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開銷和功耗;
  • SSL證書需要錢,功能越強(qiáng)大的證書費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒有必要一般不會(huì)用;
  • SSL證書通常需要綁定IP,不能在同一IP上綁定多個(gè)域名;

五. SSL/TLS的協(xié)議的基本過程

  1. 客戶端向服務(wù)器端索要并驗(yàn)證公鑰。
  2. 雙方協(xié)商生成"對話密鑰"。
  3. 雙方采用"對話密鑰"進(jìn)行加密通信。

上面過程的前兩步,又被稱為“握手階段”

六. 握手階段的詳細(xì)過程

“握手階段”涉及四次通訊,且每次通信都是明文的

1. 客戶端發(fā)出請求(ClientHello)

客戶端向服務(wù)器發(fā)出加密通信的請求,并向服務(wù)器提供以下信息

  • 支持的加密協(xié)議版本,比如TLS 1.0版
  • 客戶端生成的隨機(jī)數(shù),用于稍后生成“對話密鑰”
  • 支持的加密算法,比如RSA公鑰加密
  • 支持的壓縮方法
2. 服務(wù)器響應(yīng)(SeverHello)

服務(wù)器收到客戶端請求后,向客戶端發(fā)出回應(yīng),回應(yīng)包含以下內(nèi)容

  • 確認(rèn)使用的加密通信協(xié)議版本,如果客戶端與服務(wù)器支持的版本不一致,則關(guān)閉加密通信
  • 服務(wù)器生成的隨機(jī)數(shù),用于稍后生成“對話密鑰”
  • 確認(rèn)使用的加密算法,比如RSA公鑰加密
  • 服務(wù)器證書
3. 客戶端回應(yīng)

客戶端收到服務(wù)器回應(yīng)后,首先驗(yàn)證證書的真實(shí)性與有效性。如果證書沒有問題,客戶端就會(huì)從證書中取出服務(wù)器的公鑰,然后向服務(wù)器發(fā)送以下信息

  • 一個(gè)隨機(jī)數(shù),該隨機(jī)數(shù)用服務(wù)器公鑰加密,防止被竊聽
  • 編碼改變通知,表示隨后的信息都將用雙方協(xié)商的加密算法和密鑰發(fā)送
  • 客戶端握手結(jié)束通知,這一項(xiàng)也是前面發(fā)送的所有內(nèi)容的hash值,用來供服務(wù)器校驗(yàn)
4. 服務(wù)器的最后回應(yīng)

服務(wù)器收到客戶端的第三個(gè)隨機(jī)數(shù)pre-master key之后,計(jì)算生成本次會(huì)話所用的“會(huì)話密鑰”,然后向客戶端發(fā)送下面信息

  • 編碼改變通知,表示隨后的信息都將用雙方協(xié)商的加密算法和密鑰發(fā)送
  • 服務(wù)器握手結(jié)束通知,這一項(xiàng)也是前面發(fā)送的所有內(nèi)容的hash值,用來供客戶端校驗(yàn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容