news 2026/8/29 12:50:23

Caddy ECH 实战:隐藏真实域名,只需 3 步就能上线路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Caddy ECH 实战:隐藏真实域名,只需 3 步就能上线路

Caddy ECH 实战:隐藏真实域名,只需 3 步就能上线路

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

运营站点时你可能以为,Caddy 自动签发 HTTPS 证书就完事了。其实客户端要访问的域名(SNI,TLS 握手中的服务器名称)仍走明文,网络上的人一眼就能看出你访问了哪个站。ECH(Encrypted Client Hello,加密客户端问候)就是为堵住这个口子而生的,而 Caddy 把它做成了近乎全自动的功能:密钥生成、轮换、发布,都能由服务器自己完成。

先用一个比喻看懂 ECH 怎么工作 📮

把写着真实域名的信装进一个通用信封,封面上写的是多个站点共用的公共域名(public name)。旁观者只看到你访问了这个通用域名,看不到真实目标。Caddy 会自动生成 X25519 密钥对、存进持久化存储,每 30 天轮换一次、轮换 90 天后删除旧密钥,并把配置发布到域名的 HTTPS DNS 记录里供客户端读取,逻辑都在 ECH 核心源码 中。

快速上手:先配公共名,再开发布,最后查记录

先做什么:选一个你权威管理、且能签发证书的域名作为公共名。Caddy 会为它获取证书,这是 ECH 的前提。在 Caddyfile 全局选项中加一行:

{ ech cdn.example.com }

再做什么:没有发布,大多数客户端根本不会使用 ECH。给全局选项加一个dns块,指定一个 DNS 提供商(需要带 DNS 提供商模块的自定义构建),解析逻辑见 Caddyfile 选项:

{ ech cdn.example.com { dns cloudflare <token> } }

最后确认什么:服务器日志里出现 "successfully published ECH configuration list",并且域名的 HTTPS DNS 记录里带上了ech参数。

常用字段速查:

  • public_name:外层信封上的域名,必须解析到本服务器——每个服务器建议只用 1 个
  • publication 的 configs:要发布哪些配置——留空即全部
  • publication 的 domains:要保护的"内层"域名——留空即自动使用全部站点域名
  • publishers.dns 的 provider:负责写 DNS 记录的提供商——选支持 HTTPS 记录写入的

最容易踩的 3 个细节

第一,公共名拿不到证书就别勉强。如果该域名的 DNS 不指向这台服务器,Caddy 签不了证书,客户端反而可能被"逼"到用明文暴露真实域名,比不开 ECH 更糟。

第二,TLS 版本会被强制拉到 1.3。ECH 依赖 TLS 1.3,Caddy 会把你配置的连接策略自动升级到最低 1.3,即使你原来写的是更低版本。

第三,On-Demand TLS 的域名必须显式列出来。Caddy 只在握手时才知道要服务哪个域名,那时再发布已经晚了;不把它们写进 publication 的 domains,首次连接照样明文泄露域名。另外,公共名越少越好——共享同一外名的站点集合越大,隐私保护越强。

没生效怎么排查:三种常见现象

现象一:HTTPS 记录里没有ech参数。原因通常是该域名是 CNAME 记录(与其他记录互斥,Caddy 会跳过),或者域名下没有任何已有记录(贸然写入可能让通配符解析失效,也会跳过)。处理:换成 A/AAAA 记录并保留至少一条已有记录,等下次发布。

现象二:浏览器显示 ECH 未启用。原因:客户端主要从 DNS 读取配置,且通常只在 DoH 或 DoT 场景下才认为它可信。处理:用开启 DoH 的浏览器再测一次。

现象三:日志报发布失败。原因一般是 DNS 提供商模块不可用或凭据没有写权限。处理:确认使用带对应提供商的自定义构建,并检查 API 密钥权限。

Caddy 的 ECH 适合谁,又劝退谁 🎯

适合你:同一批服务器后面挂着多个子域名或多个站点,希望具体站点对公网观察者"隐身";域名在自己手里,能签证书、能写 DNS 记录。

不适合你:只有单一站点且域名本身就是品牌的一部分(没有隐藏需求);或 DNS 服务商不支持写 HTTPS 记录。

还要提醒一句:这个功能在 TLS 模块 中标记为实验性,接口可能随版本变化。下一步可以关注 ECH 草案的最终定稿、更多 DNS 提供商的支持情况,以及 On-Demand TLS 域名是否需要手工枚举。

【免费下载链接】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/29 12:50:10

STM32H745双ADC校准失败排查:从电源噪声到软硬件加固

贴片、烧录、过产测&#xff0c;这是我这几个月循环次数最多的动作。测试工装每次上电都会先把所有ADC通道拉一轮&#xff0c;再写校准因子。原本这条流程已经稳稳跑了两个多月&#xff0c;直到某一批STM32H745开始出幺蛾子&#xff1a;每十块板子&#xff0c;就有一块串口报AD…

作者头像 李华
网站建设 2026/8/29 12:48:18

MATLAB实现随机信号AR建模:从Yule-Walker方程到Levinson-Durbin算法

1. 从“醉汉游走”到信号建模&#xff1a;为什么我们需要参数建模法&#xff1f; 如果你用MATLAB画过那个经典的“醉汉随机游走”模型&#xff0c;你可能会觉得随机信号就是一堆杂乱无章、无法预测的点。确实&#xff0c;从表面上看&#xff0c;一个股票价格的波动、一段语音信…

作者头像 李华
网站建设 2026/8/29 12:47:52

Neovim Go 注释格式化指南:gq 没反应时,如何用 gw 快速恢复

Neovim Go 注释格式化指南&#xff1a;gq 没反应时&#xff0c;如何用 gw 快速恢复 【免费下载链接】neovim Vim-fork focused on extensibility and usability 项目地址: https://gitcode.com/GitHub_Trending/ne/neovim 当你在 Neovim 里写 Go&#xff0c;选中注释按 …

作者头像 李华
网站建设 2026/8/29 12:46:11

网易2018数据库运维校招笔试试卷解析:核心考点与备考策略

1. 一套2018年的笔试卷&#xff0c;为什么今天还有参考价值看到"网易2018校园招聘数据库运维工程师(BJ)笔试卷"这个标题&#xff0c;估计不少正在准备校招的同学会先愣一下&#xff1a;2018年的题&#xff0c;放到现在还有用吗&#xff1f;我的答案是&#xff1a;太有…

作者头像 李华
网站建设 2026/8/29 12:46:02

STM32 GPIO按键控制LED:从轮询到中断的嵌入式开发入门实践

1. 项目概述&#xff1a;从“点灯”到“系统思维”的敲门砖 “按键控制LED灯”&#xff0c;这几乎是所有嵌入式开发者入门时写的第一个程序&#xff0c;简单到甚至有些“幼稚”。但如果你真这么想&#xff0c;那可能就错过了嵌入式开发最精髓的入门课。这个项目远不止是让一个灯…

作者头像 李华
网站建设 2026/8/29 12:45:05

LPS22DF压力传感器深度解析:从数字直出到低功耗设计

最近有个搜索词挺有意思&#xff1a;hx711压力传感器原理。搜这个词的人&#xff0c;多半是手里拿了一个桥式压力变送器&#xff0c;想用 HX711 这颗 24 位 ADC 把差分电压采回来。思路本身没毛病&#xff0c;但如果你做的是穿戴设备、无人机、气象站或者电池供电的便携仪器&am…

作者头像 李华