4. Protocol Overview (协议概述)
ACME 允许客户端使用一组通过 HTTPS [RFC2818] 传输的 JavaScript 对象表示法 (JavaScript Object Notation, JSON) 消息 [RFC8259] 请求证书管理操作。使用 ACME 的颁发过程类似于传统 CA 的颁发过程, 其中用户创建账户、请求证书, 并证明对该证书中域名的控制, 以便 CA 颁发所请求的证书。
ACME 的第一阶段是客户端向 ACME 服务器请求账户。客户端生成非对称密钥对并请求新账户, 可选地提供联系信息、同意服务条款 (Terms of Service, ToS), 和/或将账户与另一个系统中的现有账户关联。创建请求使用生成的私钥签名, 以证明客户端控制它。
Client Server
[Contact Information]
[ToS Agreement]
[Additional Data]
Signature ------->
Account URL
<------- Account Object
[] Information covered by request signatures
Account Creation
一旦账户注册完成, 客户端需要采取四个主要步骤来获取证书:
-
提交证书颁发订单 (Order)
-
证明对证书中请求的任何标识符 (Identifiers) 的控制
-
通过提交 CSR 完成订单
-
等待颁发并下载已颁发的证书
客户端的证书订单描述了所需的标识符以及一些额外字段, 这些字段捕获 CSR 格式不支持的语义。如果服务器愿意考虑颁发此类证书, 它会响应客户端在颁发证书之前必须满足的要求列表。
例如, 在大多数情况下, 服务器将要求客户端证明它控制所请求证书中的标识符。由于有许多不同的方法来验证不同类型标识符的拥有权, 服务器将从适合所声明标识符的可扩展挑战集中进行选择。客户端使用一组响应来告诉服务器客户端已完成哪些挑战。然后服务器验证客户端已完成挑战。
一旦验证过程完成且服务器满意客户端已满足其要求, 客户端通过提交 PKCS#10 证书签名请求 (Certificate Signing Request, CSR) 来完成订单。服务器将颁发所请求的证书并使其可供客户端使用。
Client Server
[Order]
Signature ------->
<------- Required Authorizations
[Responses]
Signature ------->
<~~~~~~~~Validation~~~~~~~~>
[CSR]
Signature ------->
<------- Acknowledgement
<~~~~~~Await issuance~~~~~~>
[POST-as-GET request]
Signature ------->
<------- Certificate
[] Information covered by request signatures
Certificate Issuance
要吊销证书, 客户端发送指示要吊销的证书的签名吊销请求:
Client Server
[Revocation request]
Signature -------->
<-------- Result
[] Information covered by request signatures
Certificate Revocation
请注意, 虽然 ACME 在原则上定义得足够灵活以处理不同类型的标识符, 但本文档解决的主要用例是将域名用作标识符的情况。例如, 第 8 节中描述的所有标识符验证挑战都涉及域名验证。将 ACME 用于其他标识符将需要进一步规范, 以描述如何在协议中编码这些标识符以及服务器可能需要哪些类型的验证挑战。