综合 Caddy 2.10:全自动 ECH、通配符证书默认优先,还有 libdns 1.0 的升级门槛

2026-09-14 21:04:28

Caddy 2.10:全自动 ECH、通配符证书默认优先,还有 libdns 1.0 的升级门槛

Caddy 2.10 已发布,2.10.2 是 2025-08-23 的 hotfix。仓库与发布页:,自动 HTTPS 文档:。

全自动 ECH:一条全局选项 + 一个 DNS provider

ECH(Encrypted ClientHello)加密 TLS 连接里最后一块明文——ClientHello,其中包含目标域名 SNI。Caddy 的做法是全自动:指定一个公共「外壳」域名,再给一个 DNS provider,Caddy 会自动生成 ECH 配置,把配置通过 HTTPS 类型 DNS 记录里的 ech SvcParamKey 发布出去(后续版本会支持轮换)。

前提是 DNS provider 模块必须编译进二进制,比如:

xcaddy build --with github.com/caddy-dns/cloudflare

最小可运行配置:

{
debug
dns cloudflare {env.CLOUDFLARE_API_KEY}
ech ech.example.net
}

example.com {
respond "Hello there!"
}

ech 是全局选项,值就是那个对外公开的外壳域名。

后量子密钥交换默认启用

2.10 默认支持标准化的 x25519mlkem768 组(X25519 + ML-KEM-768)。每个新会话同时对经典对手和量子对手具备前向保密,且与现有客户端保持兼容——不需要改配置,升级即生效。

通配符证书默认优先

以前 Caddy 会对配置里出现的每个域名逐一申请证书。现在子域优先由通配符证书覆盖,减少签发数量。如果某个域名确实需要独立证书,用 tls 里的 force_automate 覆盖:

example.com {
tls {
force_automate
}
respond "Hello there!"
}

实验性的 auto_https prefer_wildcard 选项已移除。

全局 dns:一处配置,多处复用

新增全局 dns 选项,把 DNS provider 凭证集中配一次,ACME DNS challenge 和 ECH 发布共用,不必在多个站点块里重复写。对应到 JSON 配置,是 tls app 的 dns 参数。

反向代理改用标准 Via 头

反向代理现在设置标准 Via 头,取代此前重复输出的 Server 头。如果你的上游或日志分析依赖 Server 头做标识,需要在代理链路上重新确认取值。

ACME profiles(实验特性)

通过 ACME profiles 可以请求非标准属性与生命周期的证书,例如 Let's Encrypt 未来提供的 6 天有效期证书。目前是实验特性,上线前先在小范围验证签发与续期路径。

libdns 1.0:不改模块就不兼容

DNS provider 模块需要迁移到 libdns 1.0 API(已打 beta tag)。cloudflare、rfc2136、desec 等已经更新;尚未更新的模块在 2.10 下不兼容。自建二进制时,先确认 xcaddy build 里挂的每个 DNS 模块都已跟进。

Go 版本策略:只支持最新一个 minor

Caddy 2.10 起只支持最新的 Go minor 版本,此前是支持最近两个。目的是尽快拿到新 Go 的安全与隐私特性(后量子支持就是例子)。构建镜像和运行环境里的 Go 工具链需要跟着上游走,否则可能编译失败或拿不到这些默认能力。

复制全文 生成海报 Caddy 运维 HTTPS TLS Web服务器

推荐文章

程序员茄子在线接单