自動證書更新環境

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

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

外部連結