自動憑證更新環境
自動證書管理環境(英語: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客戶端列表 (頁面存檔備份,存於網際網路檔案館)