自動憑證更新環境

用於在憑證授權單位與網路伺服器間自動互動的協定

自动证书管理环境(英語:Automatic Certificate Management Environment,缩写ACME)是一种通信协议,用于证书颁发机构与其用户的Web服务器之间的自动化交互,允许以极低成本自动化部署公钥基础设施[1][2]该协议由網際網路安全研究小組英语Internet Security Research Group(ISRG)为Let's Encrypt服務設計。[1]

ACME標誌

该协议通过HTTPS协议傳輸JSON格式的信息[2] [3],并已由专门的IETF工作组在RFC 8555中规范为一个互联网标准[4][5]

客户端实现

ISRG提供了自由且开源的ACME实現軟體certbot,它是一个基于Python编写的使用ACME协议的服务器证书管理软件[6] [7] [8],另有用Go語言编写的证书颁发机构实现boulder[9]。其他ACME客户端实现還包括Smallstep[10]、step-ca和Keyon Enterprise PKI页面存档备份,存于互联网档案馆)。

自2015年以来,各操作系统上已出现众多可供选择的客户端。[11]

通用的ACME工具
客户端 类型 组织和/或主要赞助商 操作系统 开源 商业使用
acme.sh页面存档备份,存于互联网档案馆 shell脚本 Neil Pang,ZeroSSL(apilayer) Linux, macOS
Caddy页面存档备份,存于互联网档案馆 网络服务器 Matt Holt,ArdanLabs,ZeroSSL(apilayer) Linux、macOS、Windows
Certbot页面存档备份,存于互联网档案馆 python脚本 網際網路安全研究小组 Linux、macOS、Windows
Certify The Web页面存档备份,存于互联网档案馆 图形界面和后台服务 Webprofusion Windows、Linux
win-acme页面存档备份,存于互联网档案馆 命令列 Wouter Tinus Windows

ACME服务提供商

支持基于ACME的免费或低成本的证书服务提供商包括Let's EncryptBuyPass Go SSL页面存档备份,存于互联网档案馆)、ZeroSSL页面存档备份,存于互联网档案馆)和SSL.com页面存档备份,存于互联网档案馆)。其他许多憑證頒發機構和程式供應商将ACME服务作为付费PKI解决方案的一部分,例如EntrustDigiCert

API版本

API v1

API v1规范于2016年4月12日发布。该版本支持为完整網域名稱颁发证书,例如example.comcluster.example.com,但不支持例如*.example.com的通用憑證。Let's Encrypt于2021年6月1日結束了API v1的支持。[12]

API v2

API v2在多次推迟后于2018年3月13日发布。ACME v2不向下兼容v1。版本2支持通用域名憑證,例如*.example.com,允许单个域下的专用网络中的大量子域用一个共享的“通配符”证书获得受信任的TLS,例如https://cluster01.example.comhttps://cluster02.example.comhttps://example.com[13]v2中的一个主要的新要求是请求通用域名憑證需要修改域名服务的TXT记录英语TXT record,以验证域名所有權。

自v1以来对ACME v2协议的更改包括:[14]

  1. 授权/发行流程已更改。
  2. JWS请求授权已更改。
  3. JWS请求正文的“resource”字段替换为新的JWS标头“url”。
  4. 目录端点/资源重命名。
  5. 验证资源中的URI更名为URL。
  6. 帐户创建和ToS协议从两步变为一步。
  7. 实现一种新的驗證类型TLS-ALPN-01。由于安全问题,早期的挑战类型TLS-SNI-01和TLS-SNI-02因安全问题已移除。[15] [16]

參見

参考文獻

  1. ^ 1.0 1.1 Steven J. Vaughan-Nichols. Securing the web once and for all: The Let's Encrypt Project. ZDNet. 9 April 2015 [2021-07-24]. (原始内容存档于2022-03-22). 
  2. ^ 2.0 2.1 ietf-wg-acme/acme-spec. GitHub. [2017-04-05]. (原始内容存档于2022-05-28). "ietf-wg-acme/acme-spec"页面存档备份,存于互联网档案馆). GitHub. Retrieved 2017-04-05.
  3. ^ Chris Brook. EFF, Others Plan to Make Encrypting the Web Easier in 2015. ThreatPost. 18 November 2014 [2021-07-24]. (原始内容存档于2015-08-01). 
  4. ^ R.Barnes; J.Hoffman-Andrews; D.McCarney; J.Kasten. Automatic Certificate Management Environment (ACME). 2019-03-12. RFC 8555. 
  5. ^ Automated Certificate Management Environment (acme). IETF Datatracker. [2019-03-12]. 
  6. ^ Certbot. 電子前哨基金會. [2016-08-14]. (原始内容存档于2022-07-11). 
  7. ^ certbot/certbot. GitHub. [2016-06-02]. (原始内容存档于2022-07-05). 
  8. ^ Announcing Certbot: EFF's Client for Let's Encrypt. LWN. 2016-05-13 [2016-06-02]. (原始内容存档于2021-07-25). 
  9. ^ letsencrypt/boulder. GitHub. [2015-06-22]. (原始内容存档于2019-08-08). 
  10. ^ Run your own private CA & ACME server using step-ca. 2019-09-17 [2020-02-21]. (原始内容存档于2019-09-17). 
  11. ^ ACME Client Implementations - Let's Encrypt - Free SSL/TLS Certificates. letsencrypt.org. [2021-07-24]. (原始内容存档于2019-03-16). 
  12. ^ End of Life Plan for ACMEv1 - API Announcements. Let's Encrypt Community Support. 2021-05-05 [2021-06-12]. (原始内容存档于2022-07-05). 
  13. ^ ACME v2 API Endpoint Coming January 2018 - Let's Encrypt - Free SSL/TLS Certificates. letsencrypt.org. [2021-07-24]. (原始内容存档于2020-11-10). 
  14. ^ Staging endpoint for ACME v2. Let's Encrypt Community Support. January 5, 2018 [2021-07-24]. (原始内容存档于2022-06-03). 
  15. ^ Challenge Types - Let's Encrypt Documentation. Let's Encrypt. 2020-12-08 [2021-05-12]. (原始内容存档于2022-05-23). 
  16. ^ Automatic Certificate Management Environment (ACME). 

外部链接