Caddy ECH完整指南:如何止住TLS握手中的域名泄露
2026/8/29 11:06:33 网站建设 项目流程

Caddy ECH完整指南:如何止住TLS握手中的域名泄露

【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy

Caddy 的 ECH(Encrypted Client Hello,加密客户端问候)功能,让你访问网站时的真实域名不再以明文出现在TLS握手里,网络观察者只能看到一个共享的"外层名"。它和 Caddy 自动HTTPS配合,全局选项里写两行配置,服务器就会自行生成密钥、定期轮换,并把配置发布到DNS。🛡️

先看哪些域名在裸奔

传统TLS中,你访问的域名(SNI,即"连接时递出去的域名名片")是明文发送的。内容加密了,但观察者照样知道你去哪个站。启用 ECH 后,真正的握手信息被加密包在一个通用的外层名里,中间人看到的只剩这个大家共用的名字,而非你的真实站点。

最小配置怎么配

在Caddyfile顶部全局选项里加入以下内容(cloudflare为DNS提供商名,以你使用的构建为准):

{ ech shared.example.com { dns cloudflare { api_token {env.CF_TOKEN} } } }

shared.example.com是外层公共名,Caddy 会自动为它申请证书,无需你操心。下方dns块指定用哪个DNS提供商发布配置,其余站点配置保持原样即可。

密钥与证书如何被自动打理

加载配置后,生成、轮换、发布全程不需要你手工操作,核心逻辑在modules/caddytls/ech.go。三个组件各司其职:

  • ECHConfiguration:你只填一个 public_name,Caddy 自动生成X25519密钥对,存入ech/configs/持久化存储。
  • ECHPublication:声明"把配置发布到哪里",默认覆盖TLS模块登记的所有站点域名,写入HTTPS/SVCB DNS记录。
  • ECHDNSPublisher:具体执行DNS写入,把Base64编码的ECH配置放进域名的HTTPS记录的ech参数里。

密钥生命周期:首次启动生成并入库;后台任务每小时检查一次,密钥满30天即生成新的并标记旧键"已替换",满90天彻底删除。多实例集群通过同一存储锁同步,不会重复轮换。还有个隐式行为:外层名会被自动加入证书自动管理清单,客户端首连因此不会退回明文SNI。

不同规模怎么开

个人与博客

  • 一两个域名直接共用一个公共名,匿名集够用。
  • 需要含DNS提供商模块的自定义构建,官方发行包默认不带。

小型团队

  • 所有子域共用一个外层名,保护的域名越多效果越好。
  • CNAME域名会被跳过发布,这类域名建议改用A记录。

企业与多域名

  • 可在 publication 里配置多个发行块,不同域名组分配不同外层名和DNS提供商。
  • 使用On-Demand TLS时,动态域名需在发行块中显式列出,否则首连会明文泄露。

开之前核对的三件事

  1. 确认构建包含DNS提供商:没有提供商模块,ech 指令不会生效,这是最常见的"配了没反应"。
  2. 确认客户端走DoH/DoT:浏览器一般只从HTTPS DNS记录读ECH配置,普通DNS下配置本身也会泄露;可用日志里的 "successfully published ECH configuration list" 验证发布是否成功。
  3. 别建太多公共名:每多一个外层名就稀释一次匿名集,一台服务器默认一个即可;另外ECH要求TLS 1.3,Caddy会自动把最低协议版本顶上去。

ECH高频问答

会不会拖慢请求?几乎无感,握手多一层加解密但只在建连时发生一次,现代硬件开销可忽略。

为什么客户端没用上ECH?查两处:域名是否已有HTTPS DNS记录、客户端是否启用DoH/DoT。任一不满足时浏览器回退普通SNI连接,网站仍然可用。

需要手工换密钥吗?不用。30天自动轮换、90天自动删除,过渡期新旧密钥并存,还没拿到新配置的客户端也能正常连接。

反代或静态站能用吗?能。ECH作用在TLS层,与站点背后是反代、静态文件还是应用无关。

目前 Caddy 的 ECH 仍标注为实验特性,字段结构后续版本可能微调。随着DNS记录标准落地和浏览器支持趋于稳定,SNI保护正在变成HTTPS的标配环节。如果你有域名和DNS API权限,上面的配置今晚就能开起来。🚀

【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询