介绍
ACME(Automatic Certificate Management Environment,自动证书管理环境),IETF标准 RFC 8555。
是一套开放标准协议,实现 TLS/SSL证书申请、域名验证、签发、续期、吊销全流程自动化,最知名的使用者就是 Let’s Encrypt 免费证书机构。
传统HTTPS证书:手动生成CSR、提交、人工审核、下载证书、到期手动续期,极易忘记续期导致网站证书失效。
ACME把全部流程变成机器之间API交互,几乎无需人工干预。
版本
- ACME v1:旧版,已经停止服务。
- ACME v2(RFC8555):现在全部使用的版本,支持通配符证书。
角色
- ACME客户端:运行在你的服务器,处理挑战、和CA通信
常见工具:certbot、acme.sh、lego;Caddy、Traefik内置ACME客户端 - ACME服务端(CA):证书颁发机构,如Let’s Encrypt、Buypass等,提供ACME接口
三大域名验证方式
CA通过“挑战”确认:你真正拥有这个域名,才给你发证书。
1. HTTP‑01(最常用)
客户端在网站路径:http://域名/.well‑known/acme‑chchallenge/token 放置验证文件;CA访问该地址校验。
限制:需要80端口开放;不能申请通配符证书。
2. DNS‑01
客户端给域名添加一条 _acme‑challenge.xxx.com 的TXT解析记录;CA查询DNS记录完成校验。
✅ 支持通配符证书 *.example.com;不需要开放80端口;适合内网域名。
TLS‑ALPN‑01
在443端口运行特殊TLS握手完成验证;不需要HTTP服务。
旧版本TLS‑SNI‑01因为安全漏洞,已经废弃不用。
工作流程
- 客户端生成账户密钥对,向CA注册账号,后续所有请求都用该私钥签名。
- 提交证书订单,告诉CA需要哪些域名的证书。
- CA下发验证挑战,客户端完成挑战(放文件 / 添加DNS记录)。
- CA从多网络节点校验挑战是否生效。
- 校验成功,客户端提交CSR证书请求。
- CA签发证书,客户端下载PEM证书链,部署到Web服务器。
- 到期前自动重复整套流程,完成自动续期。
关键特点
- 标准化:多家CA都支持同一套协议,切换CA不用改大量脚本。
- 全自动化:无人值守自动续期,避免证书过期事故。
- 安全:所有请求JWS签名,防篡改冒充。
典型场景
- 网站自动申请免费HTTPS证书;
- K8s Ingress‑cert‑manager 底层就是ACME协议;
- 私有CA也可以部署ACME服务端做内部证书自动化。