五分鐘搞懂HTTPS

Runningfyy發表於2021-12-02

1.HTTP缺點

http是應用層協議
主要有這些不足

  • 通訊使用明文(不加密),內容可能會被竊聽
  • 不驗證通訊方的身份,因此有可能遭遇偽裝
  • 無法證明報文的完整性,所以有可能已遭篡改

2.HTTPS是什麼

HTTP+ 加密 + 認證 + 完整性保護 =HTTPS

HTTPS 是身披 SSL 外殼的 HTTP ,SSL主要就做了加密、認證、完整性保護三件事

2.1加密

ssl裡面有三種加密方式

image.png

  • 雜湊演算法用於生成摘要,驗證完整性
  • 非對稱加密用於加密身份,非對稱演算法需要公鑰私鑰,效能差
  • 對稱加密用於加密通訊資訊,對稱加密只需要一個共享祕鑰,效能好

    2.2認證

    如何保證和客戶端通訊的是真正的服務端?
    服務端可以起申請數字證書認證機構(CA) 認證
    CA會用CA的私鑰把伺服器的公鑰,還有各種認證資訊一起加密成數字證書
    image.png
    然後客戶端用已經安裝的CA的公鑰去解密數字證書,如果資訊符合,即可完成認證。
    我們看一下思否的https數字證書
    image.png

2.3完整性保護

一段資訊,經過摘要演算法得到一串雜湊值,就是摘要(dijest)。

客戶端拿到資訊以後,對資訊生成一次摘要,拿到摘要A。如果該摘要和從數字簽名中解密出來的摘要B一樣,就證明資訊是完整的,沒有丟失

這個摘要就是數字簽名

數字簽名和數字證書區別
數字簽名是伺服器自己籤的,為了資訊完整性
數字證書是CA提供的,裡面有伺服器的公鑰和認證資訊,用於認證
image.png

3.具體通訊過程

image.png

3.1 客戶端傳送加密申請

客戶端向伺服器發起請求,請求中包含使用的協議版本號、以及客戶端支援的加密方法等。

3.2 服務端以證書回應

伺服器端接收到請求後,確認雙方使用的加密方法、並給出伺服器的證書

3.3 客戶端確定身份,拿到公鑰。生成隨機數給伺服器

客戶端確認伺服器證書有效後,生成一個新的隨機數,並使用數字證書中的公鑰,加密這個隨機數,然後發給伺服器。

3.4 伺服器收到隨機數

伺服器使用自己的私鑰,來解密客戶端傳送過來的隨機數

3.5 正式通訊

客戶端和伺服器端用隨機數生成共享祕鑰 相互加密通訊。

4.安裝https證書

  1. 先申請一個證書 個人的有免費的可以申請
    image.png
  2. 然後下載證書
    nginx資料夾裡面有這兩個證書 一個應該是 .key檔案 一個是.crt檔案
    image.png
  3. 把該檔案移動到nginx相關位置
  4. 修改配置,並重啟
    ssl_certificate "/etc/nginx/tlsconfig/1_yangkaiqiang.com_bundle.crt";
    ssl_certificate_key "/etc/nginx/tlsconfig/2_yangkaiqiang.com.key";
  5. https配置成功,可以訪問了
    image.png

5.面試題

  1. 什麼是https
  2. 數字證書是什麼
  3. https的特點
  4. https通訊過程
  5. https如何保證安全的

相關文章