把 DNS-01 做成一个真正可用的 Web 工具:从命令行脚本到安全的证书申请平台
为域名申请 HTTPS 证书时,HTTP-01 往往是最省事的方式。但在一些环境中,DNS-01 更合适: DNS-01 的基本原理很简单:证书机构要求申请者在指定域名下添加一条 TXT 记录,查询到正确值后,即可确认申请者拥有该域名的 DNS 控制权。 Certbot 已经能够在命令行中完成这一流程,但命令行操作并不适合所有用户。尤其是在申请根域名、多个子域名和通配符证书时,TXT 记录的管理、验证顺序、失败恢复和证书下载都会迅速变得复杂。 因此,一个围绕 DNS-01 构建的 Web 工具,价值并不在于“把命令搬到网页上”,而在于把整个异步验证过程变成一个安全、清晰、可恢复的状态机。 本文已对域名、主机、目录、端口、服务名、接口路径、文件名和部署拓扑进行抽象处理,不包含实际生产环境中的可定位信息。 一、工具的目标是什么 这个工具面向无法或不愿直接操作 Certbot 命令行的用户。 用户只需要完成几件事: 系统负责: 二、为什么不能只是给 Certbot 套一个表单 最简单的实现似乎是: 这种设计很快就会遇到问题。 Certbot 的 DNS-01 流程需要等待用户手动修改 DNS。这个过程可能持续几分钟,也可能更久。如果 HTTP 请求一直保持连接: 正确的设计应该是: 也就是说,Web 请求只负责触发和查询,不能承担整个证书申请生命周期。 三、整体架构 该工具采用常见的多层 Web 架构: 应用进程只监听本机回环地址,不直接暴露给局域网或公网。 外部入口使用现有网站下的一个应用子路径,而不是单独建立新域名。这样可以复用既有的 HTTPS 入口、访问控制和反向代理体系。 真实部署中,外部路径、内部端口、配置文件和服务名称都应视为敏感运维信息,不应出现在公开文章、截图、错误页面或前端源码中。 …