HTTPS SSL/TSL 1.2 通訊步驟大致如下。
- 驗證身份(Authentication):client以server提供的憑證(certificate)來驗證server是否為真。
- 密鑰交換(Key Exchange):client與server產生加密傳輸資料用的對稱式金鑰
- 加密資料傳輸(Encrypted Data Transfer):clinet與server使用對稱金鑰加密並傳輸資料。
前兩步驟為TSL Handshake Protocol(TSL握手),用於驗證server身分並產生對稱加密金鑰;
第三個步驟為Application Data Protocal(資料傳輸),用於傳輸加密資料。
以上是對TSL通訊流程的簡單劃分。TSL(1.2) protocal的詳細定義參考RFC 5246。
下圖為HTTPS通訊流程圖(*
為選擇性訊息)。
TLS communication flow diagram
┌──────────┐ ┌──────────┐
│ Client │ │ Server │
└─────┬────┘ └────┬─────┘
│ │
│ │
│ │
│ ClientHello │ ─┐ ─┐
├────────────────────────────────────────►│ │ │
│ │ │ │
│ │ │ │
│ ServerHello │ │ │
│ Certificate*│ │ │
│ ServerKeyExchange*│ │Authentication │
│ CertificateRequest*│ │ │
│ ServerHelloDone │ │ │
│◄────────────────────────────────────────┤ │ │
│ │ │ │
│ │ │ │
│Certificate* │ ─┤ │TLS Handshake
│ClientKeyExchange │ │ │
│CertificateVerify* │ │ │
│[ChangeCipherSpec] │ │ │
│Finished │ │ │
├────────────────────────────────────────►│ │Key Exchange │
│ │ │ │
│ │ │ │
│ [ChangeCipherSpec]│ │ │
│ Finished│ │ │
│◄────────────────────────────────────────┤ ─┤ ─┘
│ │ │
│ │ │Encrypted Data Transfer
│ Application Data │ │
│◄───────────────────────────────────────►│ ─┘
│ │
│ │
│ │
▼ ▼
另外The Illustrated TLS Connection這個網站對TLS 1.2 connection的每個步驟的資料有非常詳細的解釋。
沒有留言:
張貼留言