HTTP協議本身是明文傳輸的,安全性較低,因此現代互聯網普遍采用 HTTPS(HTTP over TLS/SSL) 來實現加密通信。HTTPS的核心是 TLS/SSL證書體系 和 加密通信流程。
一、HTTPS 證書體系
HTTPS依賴 公鑰基礎設施(PKI, Public Key Infrastructure) 和 數字證書 來驗證服務器身份并建立安全連接。
1. 數字證書的作用
- 身份認證:證明服務器是合法的(如
example.com
的擁有者)。 - 密鑰交換:用于協商加密通信的密鑰。
- 數據完整性:防止數據被篡改。
2. 證書的組成
字段 | 說明 |
域名(CN/SAN) | 證書綁定的域名(如 |
公鑰 | 服務器的公鑰,用于加密數據或驗證簽名。 |
頒發者(CA) | 簽發證書的證書頒發機構(如 Let's Encrypt、DigiCert)。 |
有效期 | 證書的生效和過期時間(通常1年~2年)。 |
簽名算法 | 用于驗證證書的算法(如 SHA-256 + RSA)。 |
數字簽名 | CA對證書的哈希值用私鑰加密后的結果,用于驗證證書真實性。 |
3. 證書類型
類型 | 特點 |
DV(域名驗證) | 僅驗證域名所有權,適合個人網站(如 Let's Encrypt)。 |
OV(組織驗證) | 驗證企業身份,適合企業網站(如銀行、政府機構)。 |
EV(擴展驗證) | 嚴格驗證企業身份,瀏覽器地址欄顯示公司名稱(已逐漸被棄用)。 |
4. 證書鏈(Chain of Trust)
HTTPS證書采用層級信任模型:
- 根證書(Root CA)
- 由受信任的根證書頒發機構(如 DigiCert、GlobalSign)管理。
- 預裝在操作系統/瀏覽器中(如 Windows Trusted Root Store)。
- 中間證書(Intermediate CA)
- 由根CA簽發,用于實際頒發終端證書(避免根CA私鑰直接暴露)。
- 終端證書(End-Entity Certificate)
- 最終提供給網站的證書(如
example.com
)。
驗證流程:
瀏覽器檢查證書簽名鏈是否可追溯到受信任的根CA。
二、HTTPS 加密通信流程(TLS握手)
HTTPS 的加密通信分為兩大階段:握手階段?和數據傳輸階段
1. 客戶端發起請求(ClientHello)
- 瀏覽器訪問
https://example.com
,發送:- 支持的TLS版本(如 TLS 1.3)。
- 支持的加密套件(如
AES256-GCM-SHA384
)。 - 隨機數(Client Random)。
2. 服務器響應(ServerHello)
- 服務器返回:
- 選擇的TLS版本和加密套件。
- 隨機數(Server Random)。
- 數字證書(包含公鑰)。
- (可選)要求客戶端證書(雙向認證,罕見)。
3. 客戶端驗證證書
- 瀏覽器檢查:
- 證書是否由受信任的CA簽發。
- 證書是否在有效期內。
- 證書綁定的域名是否匹配當前訪問的域名。
- 證書是否被吊銷(通過OCSP或CRL)。
4. 密鑰交換(Key Exchange)
- TLS 1.2及之前:
客戶端生成 Pre-Master Secret,用服務器公鑰加密后發送。 - TLS 1.3(簡化):
直接通過 DH(Diffie-Hellman) 算法協商密鑰,無需加密傳輸。
5. 生成會話密鑰
- 客戶端和服務器使用:
Client Random
+Server Random
+Pre-Master Secret
- → 生成 Master Secret
- → 派生 會話密鑰(Session Key)(用于對稱加密通信)。
6. 加密通信開始
- 客戶端發送數據:用會話密鑰加密→服務器用會話密鑰解密。
- 服務器返回數據:用會話密鑰加密→客戶端用會話密鑰解密。