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