在 ACME 协议持续演进的过程中,Let's Encrypt 于 2026 年正式推出了 DNS-Persist-01 这一全新验证模型。该模型旨在解决传统 DNS-01 挑战在现代短生命周期证书场景下面临的操作摩擦,通过引入持久化授权记录,使一次域名控制验证可复用于多次证书签发。本文将从验证逻辑、持久化策略、配置参数三个维度展开深度解析,帮助运维工程师和安全架构师理解这一新范式的本质差异与落地要点。
传统 DNS-01 的工作原理与局限性
传统 DNS-01 验证机制要求 ACME 客户端在每次申请或续期证书时,首先生成随机的挑战令牌,然后将其作为 TXT 记录发布到特定的 DNS 子域名 _acme-challenge.<域名> 下。Let's Encrypt 的验证服务器随后查询该记录,确认令牌匹配后完成域名控制权的临时验证。完成验证后,该 TXT 记录即可删除,理论上不会对 DNS 体系造成持久影响。
这种模式在证书有效期为 90 天的时代运行良好,但随着 Let's Encrypt 将证书有效期缩短至 45 天,运维团队面临的压力显著增加。每次续期都涉及 DNS API 调用、记录传播等待(通常建议等待 60 秒以上)以及潜在的网络抖动风险。对于内部系统、IoT 设备批量部署或 DNS 变更流程严格的企业环境,频繁的 DNS 修改成为自动化流水线的瓶颈。更为关键的是,传统 DNS-01 将敏感的资产锁定为 DNS 写权限和 API 凭证,一旦这些凭证泄露,攻击者可随意绑定任意域名。
DNS-Persist-01 的核心设计理念
DNS-Persist-01 彻底重构了验证流程,其核心理念是将一次域名控制验证转化为持久化的授权绑定。运营者在首次完成验证后,在域名 DNS 中放置一条特殊的 TXT 记录 _validation-persist.<域名>,该记录包含两部分核心信息:证书签发机构的标识符(如 letsencrypt.org)以及对应的 ACME 账户 URI。示例记录格式如下:
_validation-persist.example.com. IN TXT (
"letsencrypt.org;"
" accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"
)
当 ACME 客户端后续请求证书时,Let's Encrypt 仅需查询该持久化记录,验证其 CA 标识与账户 URI 是否匹配,即可确认域名控制权,而无需再生成新的挑战令牌或等待 DNS 传播。这一设计从根本上消除了每次续期的 DNS 修改环节,使证书流水线回归纯粹的本地密钥操作。
关键配置参数与生命周期控制
DNS-Persist-01 提供了精细化的参数体系,以适应不同安全场景的需求。最核心的可选参数是 persistUntil,它为持久化授权设定了明确的失效时间戳。当 persistUntil 指定的时间点过后,CA 将拒绝使用该记录进行验证,除非运营者主动更新 DNS 记录以延长期限。这一机制为自动化系统提供了安全的回收阀,避免授权在账户迁移或域名变更后被长期滥用。
另一个重要参数是范围控制标记,用于声明该授权是否涵盖子域名或支持通配符证书。默认行为下,持久化记录仅授权精确的 FQDN,不包含任何子域名。运营者可通过显式配置扩展授权范围,但应谨慎评估通配符权限对安全边界的影响。此外,多 CA 共存场景也得到了原生支持 —— 在同一域名下发布多条 TXT 记录,每条指向不同的证书签发机构,即可实现授权的跨 CA 迁移。
安全模型的根本性转变
从传统 DNS-01 迁移至 DNS-Persist-01 意味着安全策略的重心发生了迁移。在传统模型中,DNS 写权限是最高敏感资产,因为每次证书签发都需要修改 DNS 记录。一旦 DNS API 凭证被盗,攻击者可绑定任意域名并获取有效证书。而在持久化模型下,DNS 记录的变更频率大幅降低,运营者可以在验证完成后锁定 DNS 配置,甚至撤销 DNS API 的写权限,仅保留读取能力。
与此同时,ACME 账户密钥晋升为核心敏感资产。由于授权与特定账户 URI 绑定,账户密钥的泄露将允许攻击者以运营者名义持续获取域名证书。因此,强化账户密钥的保护措施成为部署 DNS-Persist-01 的必要前提。建议启用硬件安全模块或加密存储方案存储账户私钥,建立账户密钥轮换机制,并在账户不再使用时及时撤销关联的持久化 DNS 记录。
典型应用场景与选型建议
DNS-Persist-01 并非传统 DNS-01 的全面替代品,而是针对特定场景的优化方案。其最典型的适用环境包括内部网络或非互联网暴露系统,这类环境无法使用 HTTP-01 或 ALPN-01 验证,但也不便频繁修改 DNS。物联网设备批量部署是另一个典型场景,大量短期证书的续期若仍依赖每次 DNS 修改,将带来难以承受的运维开销。此外,对于 DNS 变更流程极其严格的企业,持久化验证消除了每次续期的变更审批环节,显著提升了运营效率。
然而,在公开互联网环境中运营的 Web 服务若已具备成熟的 DNS 自动化能力,传统 DNS-01 仍然足够可靠。对于高安全性场景,运营者可能倾向于每次验证都进行独立的挑战验证,以限制单点泄露的持续影响。选型时应综合考量自动化成熟度、密钥管理能力、证书生命周期以及团队运维流程,而非盲目追求持久化的便利性。
落地实施的关键路径
部署 DNS-Persist-01 的第一步是创建或确认已有的 ACME 账户,并获取其账户 URI。随后,在域名的权威 DNS 区域中创建 _validation-persist 前缀的 TXT 记录,填入 CA 标识、账户 URI 及可选的 persistUntil 参数。记录生效后,使用支持该验证类型的 ACME 客户端(如配置了 DNS-Persist-01 插件的 Certbot、lego 或 acme.sh)发起证书申请。首次验证完成后,尝试续期以确认持久化机制正常工作。
在生产环境中,建议为 persistUntil 参数设置合理的周期,理想情况下与证书有效期保持一致(如 45 天),以确保自动续期流程不会因授权过期而中断。同时,建立监控告警机制,追踪持久化记录的存在性与有效性,防止因意外删除或 DNS 同步问题导致证书签发失败。对于多账户或多租户场景,应清晰记录每条持久化记录与账户的映射关系,避免授权混淆。
资料来源
本文技术细节参考 Let's Encrypt 官方博客对 DNS-Persist-01 的介绍(https://letsencrypt.org/2026/02/18/dns-persist-01)。