TLS

返回 计算机网络

TLS(Transport Layer Security,传输层安全)在 TCP 之上提供加密、完整性与身份认证。HTTPS、SMTPS、wss:// 等都是在各自应用协议外包一层 TLS。

TLS 管「怎么安全传」,不是「长连接」;连接是否持久由 HTTP Keep-Alive、WebSocket 等另议。


与 SSL 的关系

名称说明
SSL早期协议(SSL 2.0/3.0),已废弃,存在已知漏洞
TLS 1.0–1.3SSL 的继任者;生产环境应使用 TLS 1.2+(推荐 1.3)
口语仍常说「SSL 证书」「SSL 握手」,实际多为 TLS

TLS 握手流程(1.2 示意)

客户端                                    服务端
  │── ClientHello(支持的加密套件、随机数)──►│
  │◄─ ServerHello(选定套件、随机数)────────│
  │◄─ Certificate(服务端证书)─────────────│
  │◄─ ServerHelloDone ──────────────────────│
  │── ClientKeyExchange(预主密钥)─────────►│
  │── ChangeCipherSpec ─────────────────────►│
  │── Finished(加密验证)──────────────────►│
  │◄─ ChangeCipherSpec ─────────────────────│
  │◄─ Finished ─────────────────────────────│
  │         加密通信开始                      │

双方用 3 个随机数(客户端随机数 + 服务端随机数 + 预主密钥)派生出对称加密密钥。

TLS 1.3 改进

  • 握手从 2-RTT 降至 1-RTT(甚至 0-RTT 恢复连接)
  • 废弃 RSA 密钥交换,强制前向保密(ECDHE)
  • 移除老旧、不安全的加密套件

证书与 CA

根 CA(内置于操作系统/浏览器)
  └── 中间 CA
        └── 服务端证书(example.com)
  • CA(Certificate Authority):受信任的第三方机构,签发证书
  • 证书内容:域名、公钥、有效期、CA 签名
  • 验证过程:客户端沿证书链逐级验证签名,直到信任根 CA

证书类型

类型说明
DV(域名验证)仅验证域名所有权,自动签发,Let’s Encrypt
OV(组织验证)验证企业信息,显示组织名称
EV(扩展验证)严格审查,地址栏显示企业名(部分浏览器已弱化展示)
通配符证书*.example.com,覆盖所有子域

非对称 + 对称混合加密

阶段算法原因
握手阶段非对称加密(RSA / ECDHE)安全交换密钥
数据传输对称加密(AES-GCM)高性能,适合大量数据

非对称加密计算代价大,只用于密钥协商;实际数据用对称密钥加密。


前向保密(Forward Secrecy)

使用 ECDHE(椭圆曲线 Diffie-Hellman)密钥交换:每次会话生成临时密钥,会话结束后销毁。即使服务器私钥泄露,也无法解密历史流量。


TLS 会话复用

完整握手需要 2-RTT,会话复用可减少开销:

机制原理缺点
Session ID服务端存储会话状态,客户端携带 ID 恢复服务端内存压力,多节点不共享
Session Ticket服务端将会话状态加密后发给客户端,下次带回ticket 密钥需保护;TLS 1.3 改用 PSK
TLS 1.3 PSK首次握手后生成预共享密钥,支持 0-RTT 恢复0-RTT 有重放攻击风险,应限 GET

SNI(服务器名称指示)

同一 IP 托管多个 HTTPS 域名的解决方案:

TLS 握手 ClientHello 中携带目标域名 →
服务端根据域名选择对应证书响应
  • 在 TLS 1.2 中 SNI 明文传输(可被中间人看到域名)
  • TLS 1.3 引入 ECH(加密 ClientHello),隐藏 SNI

OCSP 与证书撤销

机制原理问题
CRL(吊销列表)下载完整吊销列表文件可能很大,不实时
OCSP实时向 CA 查询证书状态依赖 CA 在线,泄露访问记录
OCSP Stapling服务端在握手中附带 OCSP 响应推荐,减少客户端请求

mTLS(双向 TLS)

标准 TLS 只验证服务端;mTLS 要求客户端也提供证书:

  │◄─ CertificateRequest ───────────────│  ← 要求客户端证书
  │── Certificate(客户端证书)──────────►│

适用场景:微服务间认证、API 网关、零信任网络。


常见 TLS 攻击与防御

攻击原理防御
BEAST利用 CBC 模式 IV 可预测TLS 1.2+,GCM 模式
POODLE强制降级到 SSL 3.0禁用 SSL 3.0 及以下
HeartbleedOpenSSL 心跳扩展内存越界升级 OpenSSL,撤销受影响证书
MITM 降级中间人协商弱加密禁用弱套件,HSTS(见 HTTPS
证书伪造恶意 CA 签发假证书证书透明度(CT)

证书透明度(Certificate Transparency)

CA 签发证书 → 必须写入公开 CT 日志 → 浏览器校验 SCT
  • 可通过 crt.sh 查询某域名的历史证书

抓包与调试

openssl s_client -connect example.com:443 -showcerts
echo | openssl s_client -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -dates

相关

  • HTTPS — HTTP 如何通过 TLS 变成 HTTPS
  • HTTP — 应用层协议
  • TCP — TLS 传统上运行在 TCP 之上
  • UDP — QUIC 内置 TLS 1.3
  • 网络性能 — 握手 RTT 与延迟
  • 网络安全 — 传输层安全
  • 通信协议 — 协议栈中的安全层
  • DNS — CAA 记录约束证书签发