摘要:ACME标准化了客户端与CA之间的证书申请和验证交互,但不会独自完成企业审批、DNS权限分配或所有设备的配置更新。本文沿着一次证书更新的实际顺序,区分协议、客户端插件和企业流程的职责,说明GlobalSignACME接入前需要准备什么,以及怎样判断任务已经完成。
证书后台出现“签发成功”,线上却仍然返回旧证书,这种情况并不一定是ACME失败了。协议完成了它负责的交互,后面的文件传递、配置更新或服务重载可能还没有完成。
讨论自动化范围,最好沿着一次证书更新走完,而不是直接问“ACME是否能全自动”。同一套协议,配上不同客户端、插件和部署环境,能做到的事情并不完全一样。
一 从发起申请到取得证书
ACME即自动化证书管理环境,RFC8555定义了客户端与CA之间的相关交互。客户端以账户身份发起订单,按要求完成标识符验证,并在满足条件后提交证书签名请求,获取签发结果。
相应账户、可用的产品权限和验证条件,需要提前具备。接入GlobalSign时,应按照其ACME服务配置准备平台信息、目录地址和必要的绑定凭据,并选择经过确认的兼容客户端。不能把另一家CA的默认设置原封不动地当作GlobalSign配置。
还要区分ACME账户密钥和网站证书私钥。前者用于账户相关交互,后者对应服务器证书;两者的用途不同,备份、访问权限与迁移也应分别管理。普通操作台账只记录秘密值的位置与取用流程,不直接粘贴完整密钥。
二 验证能否无人值守 取决于控制方式
HTTP-01需要验证服务能够访问规定位置的响应内容;DNS-01需要在权威DNS中提供相应TXT记录。客户端能否自动完成这些工作,要看插件、网络路径和授权是否满足要求。
假如DNS记录只能由外部供应商人工修改,即使客户端支持DNS-01,每次仍需要人工提交工单,就不能把这条任务称作无人值守续期。可评估受控API、适当的验证委派方式,或保留明确的人工处理安排,但应在实施前确认安全边界。
验证凭据也应按最小权限配置。如果只需修改特定验证区域,就不应为了方便而长期授予整个DNS账户的最高权限。客户端运行账户离职、令牌到期和DNS迁移,都可能破坏原本可用的任务,需要纳入变更检查。
三 部署不属于协议本身的统一承诺
| 更新中的动作 | 通常由谁执行 | 应检查什么 |
| 订单与签发交互 | ACME客户端与CA | 账户、权限、请求与状态 |
| 验证记录写入或文件放置 | 客户端插件或配套系统 | 授权范围、传播与访问路径 |
| 证书保存及格式转换 | 客户端存储插件或脚本 | 文件、权限与格式 |
| 更新服务绑定并重载 | 部署插件、脚本或设备接口 | 目标配置与服务状态 |
| 线上结果确认 | 检查程序与运维人员 | 实际端点返回的新证书 |
| 更新中的动作 | 通常由谁执行 | 应检查什么 |
因此,“支持ACME”不能直接等同于“支持公司所有设备自动部署”。一台普通Web服务器、云负载均衡和托管CDN,可能需要三种不同的交付方式。没有部署接口的设备,也可能需要保留人工操作。
GlobalSign提供ACME服务,企业可以结合兼容客户端或相应管理工具构建更新流程。选择工具时,应要求在实际环境中展示证书怎样到达目标服务,不能只看签发日志。
四 适合先自动执行的部分
可以优先选择配置稳定、权限清楚、能够核验结果的重复动作。例如,某项服务的名称范围固定,验证插件可用,配置路径和重载方式已确认,那么从申请到部署就有较好的自动执行条件。
相反,涉及主体变化、业务退役、证书范围扩大或高风险密钥操作时,应保留相应审核。自动化的目的不应是让任何系统都能随意申请任意域名的证书,而是让已批准的工作可靠重复。
上线初期还要考虑失败时的行为。验证没有通过,应保留仍然有效的线上配置;下载到了新文件,也要先确认格式、配对和服务配置,再执行替换。不能让一个下载异常或空文件覆盖当前可用证书。
五 续期任务需要有可观察的结尾
一次任务可以分成未到续期条件、已完成签发、已部署和已核验等状态。客户端执行退出码为零,不一定表示真的申请了新证书;也可能只是检查后发现尚未到更新时间。日志和通知应让维护者知道实际发生了什么。
当发生真实更新后,应比较目标端点的证书指纹、有效期与名称,必要时覆盖多节点与不同网络路径。某个节点成功不能代表全部节点都已切换。
还应保留失败后的接手方式:谁查看日志、谁能补验证、哪种异常需要停止自动任务,以及如何按批准流程恢复。这样,ACME才能成为一条可维护的更新路径,而不是定时器里一行没人理解的命令。
Q1 支持ACME的CA 能直接远程修改我的Web服务器吗 A:协议本身不作这样的统一承诺。服务器配置通常由客户端插件、部署程序或设备接口处理,相关权限和执行方式需要企业配置。 Q2 DNS-01通过一次 后面是否永久不用验证 A:不能这样理解。后续签发仍需满足CA当时的验证要求,既有验证可能过期或不再可复用。应确保验证路径能够持续工作。 Q3 部署插件执行成功 为什么还要从线上检查 A:插件可能更新了错误配置、只处理了部分节点,或者服务没有重新加载证书。线上检查确认的是用户实际连接到的结果,与文件写入成功属于不同证据。
FAQ
资料来源
IETF RFC 8555:ACME协议
https://www.rfc-editor.org/rfc/rfc8555.html
GlobalSign官方文档:ACME常见问题与接入条件
https://docs.globalsign.com/solutions/services/acme/acme-faqs
Certbot官方文档:续期、插件与部署钩子
https://eff-certbot.readthedocs.io/en/stable/using.html