ArcLibrary

TLS(传输层安全)

现代加密通信的事实标准 —— HTTPS / SMTPS / IMAPS / DoT 都跑在它上面。

TLS加密密钥
核心 · Key Idea

一句话TLS 在 TCP 之上提供保密性、完整性、身份认证:双方先用证书 + 公钥交换出一个对称会话密钥,之后所有数据用它加密。HTTPS / SMTPS / IMAPS / DoT / mTLS / gRPC 全都靠它。

是什么#

TLS 不是某一个协议,而是「为另一个协议加上加密通道」的通用协议。常见用法:

协议TLS 版本
HTTPHTTPS
SMTPSMTPS / STARTTLS
IMAPIMAPS
DNSDoT (DNS over TLS)
MQTTMQTTS

主流版本:TLS 1.2(旧但仍广泛使用)/ TLS 1.3(推荐,更安全更快)。

打个比方#

打个比方 · Analogy

TLS 是保险箱机制

  • 出厂前在双方之间安全交换一把通用钥匙(握手);
  • 之后双向所有信件都锁进同一型号保险箱(对称加密);
  • 就算邮递员(运营商)拿到箱子也开不了。

关键概念#

对称密钥Symmetric Key
握手协商出的会话密钥,加密 / 解密都用它,速度快(AES)。
非对称密钥Asymmetric Key
公钥 + 私钥,用于握手阶段安全交换对称密钥(RSA / ECDHE)。
证书链Cert Chain
服务器证书 → 中间证书 → 根 CA。浏览器一路验签。
PFSPerfect Forward Secrecy
每次会话用临时密钥(ECDHE),即使私钥事后泄露也解不开历史会话。
0-RTT0-RTT
TLS 1.3 复用上次会话信息直接发数据,零握手开销但有重放风险。
mTLSMutual TLS
双向证书认证,常用于服务间通信、零信任网络。

怎么工作(TLS 1.3 简化)#

TLS 1.3 抛弃了 RSA 静态密钥交换,强制 PFS,握手压缩到 1-RTT。

实操要点#

  • 优先 TLS 1.3:禁用 1.0 / 1.1(PCI / ISO 已要求)。
  • 证书自动续签:Let's Encrypt + Caddy / Traefik / certbot —— 别再人工续签。
  • openssl s_client -connect host:443 -tls1_3 -servername host:调试 1.3 握手。
  • testssl.sh:开源脚本,扫描站点支持的版本 / cipher / 漏洞。
  • mTLS 部署:每个服务一张证书 → 服务网格(Istio / Linkerd)自动签发与轮换。
  • 不要把私钥提交到 git:生产私钥放 Vault / KMS / Secret Manager。

易混点#

TLS
1999 年起的标准,已迭代到 1.3。
现代术语应统一叫 TLS。
SSL
SSL 1/2/3 是 TLS 的前身,**已全部废弃**。
"SSL 证书" 是历史习惯叫法。

延伸阅读#