本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 ACME 發行憑證
在 PKI 管理員設定具有網域驗證和外部帳戶繫結的 ACME 端點之後,應用程式擁有者可以使用 ACME 用戶端來發行憑證。本節說明發行流程,提供使用 Certbot 的簡短範例,並說明 ACME 發行的憑證在 ACM 中的顯示方式。
發行的運作方式
ACME 憑證發行流程遵循 RFC 8555 通訊協定:
-
帳戶註冊:ACME 用戶端使用 EAB 登入資料 (金鑰 ID 和 MAC 金鑰) 註冊帳戶。這是每個 ACME 用戶端的一次性步驟。
-
憑證順序:用戶端會建立指定憑證網域名稱的順序。
-
授權:ACME 伺服器會檢查預先設定的網域驗證。由於端點使用
PRE_APPROVED授權,因此用戶端不需要即時挑戰。 -
完成:用戶端提交憑證簽署請求 (CSR) 以完成訂單,且 ACM 會發出憑證。
-
下載:用戶端下載發行的憑證鏈。
重要
私有金鑰是由 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 \ --emailuser@example.com\ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory \ --eab-kidAAABBBCCC111222333\ --eab-hmac-keybase64encodedmackey\ --issuance-timeout 120 \ --domainwww.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 匯出:無法使用
ExportCertificateAPI,因為用戶端已有憑證,因此憑證已依定義匯出。 -
僅限透過 ACME 撤銷:使用 ACME 端點的 revoke-cert URL。ACM
RevokeCertificateAPI 不適用於 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