SSL (Secure Sockets Layer) 為網路通訊提供機密性、完整性與身分驗證。位於 TCP/IP 模型的**傳輸層與應用層之間**,使用 TCP 提供可靠傳輸,在應用層資料傳送前完成加密演算法協商、金鑰交換與伺服器/客戶端驗證。

圖 1 SSL 協議分層:Record 為基礎,上層為 Handshake、Alert、ChangeCipherSpec
| 子協議 | 功能 | 關鍵特性 |
|---|---|---|
| SSL Record Protocol | 資料封裝、壓縮、加密、完整性保護 (MAC) | 建立於可靠傳輸 (TCP) 之上;所有上層協議皆封裝於 Record |
| SSL Handshake Protocol | 身分驗證、演算法協商、金鑰交換、建立加密連線 | 封裝於 Record 中;客戶端/伺服器雙向驗證可選 |
| SSL Alert Protocol | 傳遞警告:Fatal (立即中斷) / Warning (僅記錄) | 如偵測到 MAC 錯誤 → Fatal Alert |
| SSL ChangeCipherSpec Protocol | 通知對方後續記錄採用新協商的加密規範 | 單一位元組訊息 (值 1),最簡單的子協議 |

圖 2 Record 協議五步驟:分段 → 可選壓縮 → 計算 MAC → 加密 → 加上 Record Header

圖 3 Record Header:ContentType | MajorVer | MinorVer | CompressedLength
| 欄位 | 長度 | 說明 |
|---|---|---|
| Content Type | 1 byte | 上層協議類型:Handshake(22)、Alert(21)、ChangeCipherSpec(20)、Application Data(23) |
| Major Version | 1 byte | SSL 主版本 (SSLv3 = 3) |
| Minor Version | 1 byte | SSL 次版本 (SSLv3.0 = 0) |
| Compressed Length | 2 bytes | 明文/壓縮後長度 (bytes) |

圖 4 Handshake 四階段:建立安全能力 → 伺服器驗證/金鑰交換 → 客戶端驗證/金鑰交換 → 完成
| 驗證項目 | 伺服器憑證 (客戶端檢查) | 客戶端憑證 (伺服器檢查) |
|---|---|---|
| 有效期 | ✓ | ✓ |
| 受信任 CA | ✓ | ✓ |
| 簽名驗證 | ✓ | ✓ |
| CN/網域吻合 | ✓ | — |
| 公鑰/簽名一致 | — | ✓ |
| LDAP 權限 | — | ✓ |
| 存取授權 | — | ✓ |
歷史註記:SSL 3.0 (1996) 為基礎,TLS 1.0 (RFC 2246) 為標準化版本,現代瀏覽器已棄用 SSL 2.0/3.0,強制 TLS 1.2+。
本文部分內容改編自《.NET 安全揭秘》
作者:玄魂
出處:https://www.cnblogs.com/xuanhun/