TLS 1.3 加密客户端问候:ECH 实战指南

本文介绍 TLS 1.3 中的 Encrypted Client Hello (ECH) 扩展,如何解决 SNI 明文泄露隐私问题。 SNI 隐私问题 在 TLS 握手过程中,客户端发送的 ClientHello 消息包含 Server Name Indication (SNI) 扩展,用于告知服务器希望连接的域名。问题在于:SNI 是明文传输的,任何中间设备(如 ISP、代理、防火墙)都可以看到用户正在访问哪个域名。 1 2 3 4 ClientHello ├── SNI: example.com ← 明文暴露! ├── supported_versions: TLS 1.3 └── cipher_suites: [...] 这意味着即使流量本身被加密,网络观察者仍能知道你访问了哪些网站。 ECH 解决方案 Encrypted Client Hello (ECH) 是 RFC 8446 的扩展,旨在加密 SNI 及其他敏感的 ClientHello 扩展。ECH 在 ClientHello 外层使用 ECH公钥 加密敏感的内部 ClientHello,只有目标服务器能解密。 工作原理 DNS 配置:服务器在 DNS 的 HTTPS 记录中发布 ECH 公钥 客户端加密:客户端使用 ECH 公钥加密敏感的 ClientHello 信息 服务器解密:服务器用私钥解密,确认 ECH 隧道建立成功 握手继续:后续握手正常进行,SNI 已被加密 1 2 3 4 5 6 7 8 Outer ClientHello (明文) ├── SNI: ech....

July 6, 2026 · 3 min · 黑豆子