HTTPS / TLS 完整请求流程说明(SSL证书验证 + CA链 + Session Key)
先贴图:

1. 概述
HTTPS 本质是:
在 TCP 之上,通过 TLS 完成 身份认证 + 密钥协商 + 对称加密通信
核心目标:
-
✔ 验证服务器身份(证书体系)
-
✔ 安全生成会话密钥(Session Key)
-
✔ 使用高性能对称加密传输 HTTP 数据
2. 整体流程总览
TCP连接建立
↓
TLS握手(身份认证 + 密钥协商)
↓
Session Key生成
↓
对称加密HTTP通信
↓
响应返回
3. 详细时序流程(逐节点说明)
① TCP 三次握手(建立基础连接)
Client → SYN → Server
Client ← SYN+ACK ← Server
Client → ACK → Server
说明:
-
建立可靠传输通道
-
HTTPS 还未开始
② ClientHello(客户端发起 TLS)
客户端发送:
ClientHello
包含:
-
支持的 TLS 版本(TLS1.2 / TLS1.3)
-
支持的加密套件(Cipher Suites)
-
Client Random(随机数)
-
扩展字段(SNI / ALPN 等)
作用:
告诉服务端“我支持什么加密方式”
③ ServerHello + Certificate(服务端响应)
服务端返回:
ServerHello
Certificate
包含:
ServerHello:
-
选定 TLS 版本
-
选定加密算法
-
Server Random
Certificate(证书链):
-
服务器证书(含公钥)
-
中间 CA 证书
-
根 CA(客户端内置信任)
④ 证书验证(客户端核心步骤)
客户端执行验证逻辑:
4.1 验证签名链
服务器证书
↓
中间CA签名
↓
根CA签名(本地信任库)
验证:
-
CA签名是否正确
-
是否能追溯到本地 Root CA
4.2 验证域名
证书域名 == 当前访问域名
例如:
-
✔ api.example.com ✔
-
❌ hacker.com ✖
4.3 验证有效期
notBefore ≤ 当前时间 ≤ notAfter
4.4(可选)吊销检查
-
OCSP
-
CRL
-
OCSP Stapling(优化方式)
✔ 验证通过后结论:
确认:服务器身份可信
⑤ 密钥交换(ECDHE)
TLS1.3 常用 ECDHE:
5.1 客户端生成临时密钥对
Client:
privateKeyA (临时)
publicKeyA
5.2 服务端生成临时密钥对
Server:
privateKeyB (临时)
publicKeyB
5.3 双方交换公钥
Client → publicKeyA → Server
Server → publicKeyB → Client
5.4 计算共享秘密(关键)
Client:
secret = f(privateKeyA, publicKeyB)
Server:
secret = f(privateKeyB, publicKeyA)
✔ 两边得到相同 secret
⑥ Session Key 生成
通过 KDF(密钥派生函数):
Session Key = KDF(secret, ClientRandom, ServerRandom)
得到:
-
AES key
-
ChaCha20 key
-
HMAC key(视 TLS版本)
⑦ TLS握手完成(Finished)
双方互相发送:
Finished
内容:
-
握手完整性校验(MAC)
确认:
握手未被篡改
⑧ 加密HTTP通信开始
之后所有 HTTP 数据:
客户端请求
HTTP Request
↓
AES/ChaCha20 加密
↓
密文发送
服务端响应
密文接收
↓
Session Key解密
↓
HTTP Response
⑨ 响应返回客户端
Server → Encrypted Response → Client
Client → Decrypt → HTML/JSON
4. CA链作用总结
Root CA(浏览器内置)
↓ 签名
Intermediate CA
↓ 签名
Server Certificate
作用:
-
建立信任链
-
防止伪造服务器
-
确保公钥归属正确
5. Session Key 生命周期
生成:TLS握手阶段
使用:整个连接生命周期
销毁:连接关闭立即清除
特点:
-
✔ 对称加密(高性能)
-
✔ 不可逆推导
-
✔ 一次连接一套或可复用(HTTP/2)
6. 核心安全模型总结
TLS安全三大支柱
① 身份认证(证书 + CA链)
你是谁?
→ CA说你是谁
② 密钥交换(ECDHE)
别人看不到 secret
③ 数据加密(Session Key)
真正传输数据靠 AES / ChaCha20
7. 一句话总结构
TLS = 用证书确认“你是谁”
+ 用ECDHE生成“只有你们知道的秘密”
+ 用Session Key加密所有HTTP数据
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)