当然可以!下面我将为你详细讲解 SSL/TLS 握手过程(以 TLS 1.2 和 TLS 1.3 为重点),并对比说明两者的区别。
SSL/TLS 握手是客户端与服务器之间建立安全加密通信的过程,它完成以下任务:
客户端 服务器
│ -------- ClientHello --------> │
│ │
│ <-------- ServerHello -------- │
│ <------- Certificate ----------│
│ <---- ServerKeyExchange ------ │
│ <------- ServerHelloDone ----- │
│ -------- ClientKeyExchange --> │
│ ----------- ChangeCipherSpec ->│
│ ----------- Finished ---------->│
│ <-------- ChangeCipherSpec ----│
│ <------------ Finished --------│
client_random
)等。server_random
)等。与 TLS 1.2 相比,TLS 1.3 减少了握手轮次(从 2 次 RTT → 1 次 RTT),去掉了很多不安全的算法。
客户端 服务器
│ -------- ClientHello --------> │
│ │
│ <---- ServerHello + Finished --│
│ ---- Finished + 应用数据 ----> │
特性 | 说明 |
---|---|
🔒 去掉非对称加密 | 不再用 RSA 握手,仅支持 DH(E) 密钥交换 |
🔒 去掉不安全算法 | RC4、SHA1、3DES 被移除 |
🚀 更快握手 | 支持 1-RTT 甚至 0-RTT(会话恢复) |
📦 加密更多元数据 | 握手过程也被加密,防止被监听 |
🔑 密钥更保密 | 前向保密(Forward Secrecy)默认开启 |
项目 | TLS 1.2 | TLS 1.3 |
---|---|---|
握手轮次 | 2 次往返(RTT) | 1 次(甚至 0-RTT) |
算法选择 | 多种(含不安全选项) | 精简、安全算法集 |
密钥交换 | 可选 DH 或 RSA | 只支持 ECDHE/DHE |
性能 | 较慢 | 更快,适配移动设备 |
安全性 | 较低(受限配置) | 默认高安全 |
TLS 握手的核心目标是:让客户端和服务器协商出一个安全的共享密钥,并用它进行后续加密通信。