HTTPS定義
在HTTP之下增加一個安全層,用於保障HTTP的加密傳輸
HTTPS本質
在客戶端和服務器之間用非對稱加密協商出一套對稱加密密鑰,每次發送信息之前將內容加密,收到之後解密,達到內容的加密傳輸
HTTPS建立連接過程
客戶端建立TLS連接
- Client Hello,包含:
- 可選的TLS版本集合
- 可選的Cipher Suite加密套件集合
- 客戶端隨機數
- Server Hello,包含:
- TLS版本
- Cipher Suite加密套件
- 服務器隨機數
服務器發回證書
- 證書包含:
- 服務器公鑰,名字,地區,主機名等
- 對服務器公鑰的簽名
- 驗證上面簽名的公鑰,及證書籤發機構的公鑰
- 簽發機構的公鑰的簽名
客戶端驗證服務器證書
- 用簽發機構的公鑰驗證服務器公鑰簽名
- 用根證書(在操作系統中)驗證簽發機構的公鑰的簽名
- 驗證主機名
客戶端和服務器協商對稱密鑰
- 客戶端用公鑰加密發送Pre-Master-Secret
- 客戶端和服務器端分別通過客戶端隨機數、服務器隨機數、Pre-Master-Secret各自計算出Master Secret
- 通過Master Secret算出:
- 客戶端加密密鑰
- 服務器端加密密鑰
- 客戶端MAC Secret
- 服務器端MAC Secret
- 客戶端發送通知:將使用加密通信
- 使用服務器端加密密鑰將以上內容加密發送給服務器端
- 客戶端發送Finished
- 服務器發送通知:將使用加密通信
- 使用客戶端加密密鑰將以上內容發送給客戶端
- 服務器發送Finished
使用對稱密鑰開始通信
- 客戶端使用服務器密鑰加密數據,服務器使用客戶端密鑰加密數據