TLS与SSL握手

当然可以!下面我将为你详细讲解 SSL/TLS 握手过程(以 TLS 1.2 和 TLS 1.3 为重点),并对比说明两者的区别。


🔐 一、什么是 SSL/TLS 握手?

SSL/TLS 握手是客户端与服务器之间建立安全加密通信的过程,它完成以下任务:

  1. 协商使用的加密算法和协议版本
  2. 验证服务器(及可选的客户端)身份
  3. 生成对称加密使用的会话密钥

✋ 二、TLS 1.2 握手过程(传统版本,主流但正在被 TLS 1.3 替代)

🧾 流程图(TLS 1.2)

客户端                          服务器
   │ -------- ClientHello --------> │
   │                                │
   │ <-------- ServerHello -------- │
   │ <------- Certificate ----------│
   │ <---- ServerKeyExchange ------ │
   │ <------- ServerHelloDone ----- │
   │ -------- ClientKeyExchange --> │
   │ ----------- ChangeCipherSpec ->│
   │ ----------- Finished ---------->│
   │ <-------- ChangeCipherSpec ----│
   │ <------------ Finished --------│

📍 详细步骤解析(TLS 1.2)

1️⃣ ClientHello(客户端问好)

2️⃣ ServerHello(服务器回应)

3️⃣ Certificate(服务器证书)

4️⃣ ServerKeyExchange(可选)

5️⃣ ServerHelloDone

6️⃣ ClientKeyExchange

7️⃣ ChangeCipherSpec

8️⃣ Finished


🔒 握手后:


⚡ 三、TLS 1.3 握手流程(更快更安全)

与 TLS 1.2 相比,TLS 1.3 减少了握手轮次(从 2 次 RTT → 1 次 RTT),去掉了很多不安全的算法。


🌟 TLS 1.3 简化流程(1-RTT)

客户端                          服务器
   │ -------- ClientHello --------> │
   │                                │
   │ <---- ServerHello + Finished --│
   │ ---- Finished + 应用数据 ----> │

🎯 特点解析(TLS 1.3)

特性 说明
🔒 去掉非对称加密 不再用 RSA 握手,仅支持 DH(E) 密钥交换
🔒 去掉不安全算法 RC4、SHA1、3DES 被移除
🚀 更快握手 支持 1-RTT 甚至 0-RTT(会话恢复)
📦 加密更多元数据 握手过程也被加密,防止被监听
🔑 密钥更保密 前向保密(Forward Secrecy)默认开启

🔁 TLS 握手前后变化对比

项目 TLS 1.2 TLS 1.3
握手轮次 2 次往返(RTT) 1 次(甚至 0-RTT)
算法选择 多种(含不安全选项) 精简、安全算法集
密钥交换 可选 DH 或 RSA 只支持 ECDHE/DHE
性能 较慢 更快,适配移动设备
安全性 较低(受限配置) 默认高安全

✅ 总结一句话

TLS 握手的核心目标是:让客户端和服务器协商出一个安全的共享密钥,并用它进行后续加密通信。