news 2026/9/5 4:52:00

三步开启 Caddy ECH:把域名藏在线路明文之前

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三步开启 Caddy ECH:把域名藏在线路明文之前

三步开启 Caddy ECH:把域名藏在线路明文之前

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

你的网站早就上了 HTTPS,但握手时还有一处明文没藏住:SNI。同网段的人抓个包,就知道你要连哪个域名。Caddy ECH(Encrypted Client Hello)就是来补这个洞的——它把真实的 ClientHello 整个加密,外面只露出一层公开的"壳"域名。

原理白话版:把信装进一个不透明信封

以前寄信,地址直接写在信封外面,谁都能读。ECH 做的事是:把真实地址折进内层信封加密,外层只写一个大家通用的共同地址。邮路(你的网络)只按外地址投递,只有收件人(你的服务器)能拆开内层信封,看到真正的域名。

这个"外地址"叫 public name。一个 public name 可以罩住你名下所有站点,共享它的站点越多,旁观者越难猜出你在访问谁。服务器端用来解密的 X25519 密钥对由 Caddy 自动生成、落盘存储、定时轮换,全程不用你手动碰密钥。

三步开启 Caddy ECH:配一行,剩下的交给 DNS

  1. 挑一个域名当 public name。硬性要求是 Caddy 能给它签发证书,比如 shared.example.com,且建议专用于 ECH,不承载真实业务。
  2. 在 TLS 配置里加入最精简的两段:
"encrypted_client_hello": { "configs": [{ "public_name": "shared.example.com" }], "publication": [{ "publishers": { "dns": { "name": "your-dns-provider" } } }] }
  1. 等 Caddy 自动发布。启动后它把 ECH 参数写进被保护域名的 DNS HTTPS(SVCB)记录,浏览器连过来时自行读取。前提只有一个:你的 DNS 服务商支持 HTTPS 记录类型。

发布不是一次性的:Caddy 起一个后台任务,先立即发布,之后每小时检查一次,需要时轮换 ECH 密钥并重新发布。

Caddy ECH 关键参数与默认值一览

字段默认值作用
public_name必填,无默认外层 ClientHello 用的域名,Caddy 会为它自动申请证书;多数部署一个就够
publication[].configs全部 configs多个 public name 时,指定要发布哪些
publication[].domains全部服务器名指定保护哪些内层域名;用按需 TLS 的域名必须在这里显式列出,否则首次连接会暴露 SNI
publishers继承全局dns提供者发布通道,目前为 DNS 发布者,缺省 DNS 提供者时整段发布是空操作
密钥轮换30 天轮换、90 天清理源码写死,不可配;轮换期间新旧密钥共存,客户端无感
最低 TLS 版本自动抬到 1.3ECH 依赖 TLS 1.3,你配得再低也会被强制上调

开启 Caddy ECH 后的踩坑与验证清单 ✅

  • 被保护域名不是 CNAME 记录。Caddy 遇到 CNAME 会跳过发布且不算错误,结果就是记录一直不存在,只有日志里一条 warn。
  • 域名下已有其他 DNS 记录(A/AAAA)。全新空域名会被主动跳过,防止 HTTPS 记录把通配符解析顶掉。
  • 客户端走 DoH 或 DoT。普通明文 DNS 下 HTTPS 记录可被中间人篡改,主流浏览器会忽略不可信来源的参数。
  • DNS 服务商支持写入 SVCB/HTTPS 记录类型,且 API 有写权限。
  • 上线后在公网 dig 该域名的 HTTPS 记录,确认ech参数存在;查不到就优先查 DNS 提供者和上面两条记录问题。

回到开头那个场景:配置生效后,旁观者再抓包,只能看到你连的是 shared.example.com,真实域名自始至终没出现在明文里。下一步就一件:给一个域名按上面三步配上,dig 一次确认ech参数落地,再决定要不要扩大保护范围。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 13:03:40

C++模板与STL:从泛型编程到工程实践的核心指南

1. 从“重复造轮子”到“开箱即用”:模板与STL的工程哲学 干了这么多年C开发,我见过太多新手(甚至一些老手)在项目里吭哧吭哧地写链表、写动态数组、写排序算法。每次看到这种代码,我都想冲上去问一句:兄弟…

作者头像 李华
网站建设 2026/9/1 9:38:08

CS自学指南快速上手:名校开源课程自学计算机的路线

CS自学指南快速上手:名校开源课程自学计算机的路线 【免费下载链接】cs-self-learning 计算机自学指南 项目地址: https://gitcode.com/GitHub_Trending/cs/cs-self-learning CS自学指南(cs-self-learning)是一个开源的计算机自学指南…

作者头像 李华
网站建设 2026/9/2 11:34:14

《容度原理解码反常现象肿瘤顶刊CA(第2期):CA·Multicancer detection tests——MCD检测“灵敏度倒挂”的容度原理解析:P4-P6关联层的信号损耗与层级耦合失衡

《容度原理解码反常现象肿瘤顶刊CA(第2期):CAMulticancer detection tests——MCD检测“灵敏度倒挂”的容度原理解析:P4-P6关联层的信号损耗与层级耦合失衡》一、现象陈述:MCD检测的“反常三悖论”2024年,C…

作者头像 李华
网站建设 2026/8/31 22:57:20

Prometheus采集失败、无指标数据全场景排查手册

Prometheus采集失败、无指标数据全场景排查手册技术栈:Kubernetes v1.32.13 Rocky Linux 8.6 Prometheus Containerd 1.7.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案Prometheus采集失败、无指标数据全场景排查手册操作环境K8…

作者头像 李华
网站建设 2026/8/31 16:29:31

算力核心指标与集群调度实战:从TFLOPS到分布式训练

算力这个话题最近被反复推上热搜,从“两大实验室将掌控全球算力”这种宏观叙事,到“单颗AI算力卡FP16算力≥280TFLOPS”“≥8颗AI算力卡”这类偏硬件规格的讨论,都指向同一个问题:算力正在成为像电力一样的基础资源。但很多人对“…

作者头像 李华