先贴图:

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数据
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐