自动证书更新环境
自动证书管理环境(英语:Automatic Certificate Management Environment,缩写ACME)是一种通信协议,用于证书颁发机构与其用户的Web伺服器之间的自动化交互,允许以极低成本自动化部署公钥基础设施。[1][2]该协议由互联网安全研究小组(ISRG)为Let's Encrypt服务设计。[1]
该协议通过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.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 Encrypt、BuyPass Go SSL (页面存档备份,存于互联网档案馆)、ZeroSSL (页面存档备份,存于互联网档案馆)和SSL.com (页面存档备份,存于互联网档案馆)。其他许多证书颁发机构和程序供应商将ACME服务作为付费PKI解决方案的一部分,例如Entrust和DigiCert。
API版本
[编辑]API v1
[编辑]API v1规范于2016年4月12日发布。该版本支持为完整域名颁发证书,例如example.com
或cluster.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.com
、https://cluster02.example.com
、https://example.com
。[13]v2中的一个主要的新要求是请求通用域名证书需要修改域名服务的TXT记录,以验证域名所有权。
自v1以来对ACME v2协议的更改包括:[14]
- 授权/发行流程已更改。
- JWS请求授权已更改。
- JWS请求正文的“resource”字段替换为新的JWS标头“url”。
- 目录端点/资源重命名。
- 验证资源中的URI更名为URL。
- 帐户创建和ToS协议从两步变为一步。
- 实现一种新的验证类型TLS-ALPN-01。由于安全问题,早期的挑战类型TLS-SNI-01和TLS-SNI-02因安全问题已移除。[15] [16]
参见
[编辑]- 简单证书注册协议,自动证书部署协议的前身。
参考文献
[编辑]- ^ 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.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.
- ^ Chris Brook. EFF, Others Plan to Make Encrypting the Web Easier in 2015. ThreatPost. 18 November 2014 [2021-07-24]. (原始内容存档于2015-08-01).
- ^ R.Barnes; J.Hoffman-Andrews; D.McCarney; J.Kasten. Automatic Certificate Management Environment (ACME). 2019-03-12. RFC 8555.
- ^ Automated Certificate Management Environment (acme). IETF Datatracker. [2019-03-12].
- ^ Certbot. 电子前哨基金会. [2016-08-14]. (原始内容存档于2022-07-11).
- ^ certbot/certbot. GitHub. [2016-06-02]. (原始内容存档于2022-07-05).
- ^ Announcing Certbot: EFF's Client for Let's Encrypt. LWN. 2016-05-13 [2016-06-02]. (原始内容存档于2021-07-25).
- ^ letsencrypt/boulder. GitHub. [2015-06-22]. (原始内容存档于2019-08-08).
- ^ Run your own private CA & ACME server using step-ca. 2019-09-17 [2020-02-21]. (原始内容存档于2019-09-17).
- ^ ACME Client Implementations - Let's Encrypt - Free SSL/TLS Certificates. letsencrypt.org. [2021-07-24]. (原始内容存档于2019-03-16).
- ^ End of Life Plan for ACMEv1 - API Announcements. Let's Encrypt Community Support. 2021-05-05 [2021-06-12]. (原始内容存档于2022-07-05).
- ^ ACME v2 API Endpoint Coming January 2018 - Let's Encrypt - Free SSL/TLS Certificates. letsencrypt.org. [2021-07-24]. (原始内容存档于2020-11-10).
- ^ Staging endpoint for ACME v2. Let's Encrypt Community Support. January 5, 2018 [2021-07-24]. (原始内容存档于2022-06-03).
- ^ Challenge Types - Let's Encrypt Documentation. Let's Encrypt. 2020-12-08 [2021-05-12]. (原始内容存档于2022-05-23).
- ^ Automatic Certificate Management Environment (ACME).
外部链接
[编辑]- Barnes, Richard. Automatic Certificate Management Environment (ACME). IETF. [2021-07-24]. (原始内容存档于2022-06-26).
- Let's EncryptACME客户端列表 (页面存档备份,存于互联网档案馆)