View a markdown version of this page

透過 ACME 發行憑證 - AWS Certificate Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過 ACME 發行憑證

在 PKI 管理員設定具有網域驗證和外部帳戶繫結的 ACME 端點之後,應用程式擁有者可以使用 ACME 用戶端來發行憑證。本節說明發行流程,提供使用 Certbot 的簡短範例,並說明 ACME 發行的憑證在 ACM 中的顯示方式。

發行的運作方式

ACME 憑證發行流程遵循 RFC 8555 通訊協定:

  1. 帳戶註冊:ACME 用戶端使用 EAB 登入資料 (金鑰 ID 和 MAC 金鑰) 註冊帳戶。這是每個 ACME 用戶端的一次性步驟。

  2. 憑證順序:用戶端會建立指定憑證網域名稱的順序。

  3. 授權:ACME 伺服器會檢查預先設定的網域驗證。由於端點使用PRE_APPROVED授權,因此用戶端不需要即時挑戰。

  4. 完成:用戶端提交憑證簽署請求 (CSR) 以完成訂單,且 ACM 會發出憑證。

  5. 下載:用戶端下載發行的憑證鏈。

重要

私有金鑰是由 ACME 用戶端產生,絕不會離開用戶端的系統。

範例:使用 Certbot 發行憑證

此範例示範如何使用 Certbot 註冊 ACME 帳戶和請求憑證。

先決條件

  • 處於 ACTIVE 狀態的 ACME 端點 (您具有目錄 URL)

  • 您想要VALID的網域狀態中至少有一個網域驗證

  • 來自 PKI 管理員的 EAB 登入資料 (金鑰 ID 和 MAC 金鑰)

  • 安裝在系統上的 Certbot

註冊 帳戶並請求憑證

重要

透過 ACM ACME 端點發行憑證最多可能需要兩分鐘。將 ACME 用戶端的發行逾時設定為至少 120 秒 (2 分鐘),以防止用戶端在交付憑證之前逾時。許多 ACME 用戶端預設為 30-90 秒,這是不夠的。

執行以下命令:

certbot certonly \ --standalone \ --non-interactive \ --agree-tos \ --email user@example.com \ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory \ --eab-kid AAABBBCCC111222333 \ --eab-hmac-key base64encodedmackey \ --issuance-timeout 120 \ --domain www.example.com

成功發行後,Certbot 會將憑證和私有金鑰存放在其預設位置 (通常是 /etc/letsencrypt/live/www.example.com/)。

ACM 中的 ACME 憑證

透過 ACME 發行的憑證會自動接收標準 ACM 憑證 ARN,並顯示在 ACM 憑證庫存中。不過,ACME 發行的憑證與透過 發行的憑證有重要的差異RequestCertificate

主要差異

  • 私有金鑰是用戶端:憑證私有金鑰是由 ACME 用戶端產生和儲存。ACM 無法存取私有金鑰。

  • 無法繫結至整合的服務:由於 AWS 不保存私有金鑰,因此 ACME 憑證無法與 Elastic Load Balancing、CloudFront 或 API Gateway 搭配使用。

  • 不在預設清單輸出中:根據預設,ACME 憑證不會出現在ListCertificates結果中。您必須包含具有 值的CertificateKeyPairOrigins篩選條件ACME,才能包含它們。 預設會SearchCertificates傳回 ACME 憑證。

  • 無法透過 ACM 匯出:無法使用 ExportCertificate API,因為用戶端已有憑證,因此憑證已依定義匯出。

  • 僅限透過 ACME 撤銷:使用 ACME 端點的 revoke-cert URL。ACM RevokeCertificate API 不適用於 ACME 發行的憑證。

  • 續約是由用戶端驅動:ACM 不會自動續約 ACME 憑證。ACME 用戶端必須在現有憑證過期之前請求新的憑證。

檢視 ACME 憑證

在 ACM 主控台中,使用篩選條件來包含具有 ACME 金鑰對原始伺服器的憑證。如需尋找憑證的詳細資訊,請參閱 搜尋憑證

列出 ACME 憑證 (AWS CLI)

list-certificates 搭配 CertificateKeyPairOrigins篩選條件使用:

aws acm list-certificates \ --certificate-key-pair-origins ACME

搜尋 ACME 憑證 (AWS CLI)

使用 search-certificates搭配CertificateKeyPairOrigin篩選條件,依其他條件尋找 ACME 憑證:

aws acm search-certificates \ --filter-statement '{"Filter": {"AcmCertificateMetadataFilter": {"CertificateKeyPairOrigin": "ACME"}}}'

您也可以篩選 或 ,以搜尋透過特定端點或 ACME AcmeEndpointArn 帳戶發行的憑證AcmeAccountId

檢視憑證詳細資訊 (AWS CLI)

執行以下命令:

aws acm describe-certificate \ --certificate-arn arn:aws:acm:region:account-id:certificate/certificate-id

撤銷 ACME 憑證

若要撤銷透過 ACME 發行的憑證,請使用 ACME 通訊協定的撤銷憑證端點。ACME 用戶端會處理此問題。

注意

ACME 發行的憑證無法使用 ACM RevokeCertificate API 撤銷。您必須透過發行憑證的 ACME 端點撤銷這些憑證。

下列範例顯示使用 Certbot 的撤銷:

certbot revoke \ --cert-path /etc/letsencrypt/live/www.example.com/cert.pem \ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory

撤銷是由與用戶端外部帳戶繫結相關聯的 IAM 角色授權,因此適用於標準acm:RevokeCertificate動作的相同 IAM 政策和 SCPs 會在此處套用。如需所需 IAM 角色組態的詳細資訊,請參閱 ACME 憑證自動化的 IAM

憑證續約

ACM 不會續約 ACME 憑證。您的 ACME 用戶端負責在目前的憑證過期之前請求新的憑證。大多數 ACME 用戶端 (包括 Certbot) 支援透過排程任務 (例如 Cron 任務或系統計時器) 自動續約。

跨續約的 ARN 穩定性

當 ACME 用戶端續約憑證時,ACM 會判斷新的發行是現有憑證的續約還是不同的憑證。如果發行來自具有相同憑證中繼資料 (例如網域名稱和金鑰演算法) 的相同 ACME 帳戶,則 ACM 會更新現有的憑證 ARN,而不是建立新的憑證 ARN。這可讓 ARN 在續約期間保持穩定,進而簡化追蹤和自動化。

如果原始憑證已從 ACM 中移除 (例如,因為它已在一年前過期並自動刪除),則具有相同中繼資料的後續發行會建立新的憑證 ARN。

Certbot 自動續約範例 (通常在 Certbot 安裝期間自動設定):

certbot renew --quiet