自动证书管理 ACME协议:证书申请、签发、续期

介绍

ACME(Automatic Certificate Management Environment,自动证书管理环境),IETF标准 RFC 8555。
是一套开放标准协议,实现 TLS/SSL证书申请、域名验证、签发、续期、吊销全流程自动化,最知名的使用者就是 Let’s Encrypt 免费证书机构。

传统HTTPS证书:手动生成CSR、提交、人工审核、下载证书、到期手动续期,极易忘记续期导致网站证书失效。
ACME把全部流程变成机器之间API交互,几乎无需人工干预。

版本

  • ACME v1:旧版,已经停止服务。
  • ACME v2(RFC8555):现在全部使用的版本,支持通配符证书。

角色

  1. ACME客户端:运行在你的服务器,处理挑战、和CA通信
    常见工具:certbot、acme.sh、lego;Caddy、Traefik内置ACME客户端
  2. 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因为安全漏洞,已经废弃不用。

工作流程

  1. 客户端生成账户密钥对,向CA注册账号,后续所有请求都用该私钥签名。
  2. 提交证书订单,告诉CA需要哪些域名的证书。
  3. CA下发验证挑战,客户端完成挑战(放文件 / 添加DNS记录)。
  4. CA从多网络节点校验挑战是否生效。
  5. 校验成功,客户端提交CSR证书请求。
  6. CA签发证书,客户端下载PEM证书链,部署到Web服务器。
  7. 到期前自动重复整套流程,完成自动续期。

关键特点

  • 标准化:多家CA都支持同一套协议,切换CA不用改大量脚本。
  • 全自动化:无人值守自动续期,避免证书过期事故。
  • 安全:所有请求JWS签名,防篡改冒充。

典型场景

  • 网站自动申请免费HTTPS证书;
  • K8s Ingress‑cert‑manager 底层就是ACME协议;
  • 私有CA也可以部署ACME服务端做内部证书自动化。

原文出处:/show_1GW3orXUqb1m.html