自動憑證更新環境

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

自動證書管理環境(英語: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). 

外部連結