翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ACME を介した証明書の発行
PKI 管理者がドメイン検証と外部アカウントバインディングを使用して ACME エンドポイントを設定すると、アプリケーション所有者は ACME クライアントを使用して証明書を発行できます。このセクションでは、発行フローについて説明し、Certbot を使用した簡単な例と、ACME が発行した証明書が ACM にどのように表示されるかについて説明します。
発行の仕組み
ACME 証明書の発行フローは、RFC 8555 プロトコルに従います。
-
アカウント登録: ACME クライアントは EAB 認証情報 (キー ID と MAC キー) を使用してアカウントを登録します。これは ACME クライアントごとに 1 回限りのステップです。
-
証明書の順序: クライアントは、証明書のドメイン名を指定する順序を作成します。
-
認可: ACME サーバーは、事前設定されたドメイン検証をチェックします。エンドポイントは
PRE_APPROVED認可を使用するため、クライアントからのライブチャレンジは必要ありません。 -
確定: クライアントは Certificate Signing Request (CSR) を送信して注文を確定し、ACM は証明書を発行します。
-
ダウンロード: クライアントは発行された証明書チェーンをダウンロードします。
重要
プライベートキーは ACME クライアントによって生成され、クライアントのシステムから出ることはありません。
例: Certbot を使用した証明書の発行
この例では、ACME アカウントを登録し、Certbot を使用して証明書をリクエストする方法を示します。
前提条件
-
ACTIVEステータスの ACME エンドポイント (ディレクトリ URL がある) -
目的のドメイン
VALIDのステータスが少なくとも 1 つのドメイン検証 -
PKI 管理者からの EAB 認証情報 (キー ID と MAC キー)
-
システムにインストールされている Certbot
アカウントを登録して証明書をリクエストするには
重要
ACM ACME エンドポイントを介した証明書の発行には、最大 2 分かかる場合があります。証明書が配信される前にクライアントがタイムアウトしないように、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。 はデフォルトで ACME 証明書SearchCertificatesを返します。 -
ACM 経由でエクスポートできない: API は
ExportCertificate、クライアントが証明書を持っているため、定義によってすでにエクスポートされているため使用できません。 -
ACME のみを使用した失効: ACME エンドポイントの失効証明書 URL を使用します。ACM
RevokeCertificateAPI は、ACME が発行した証明書では機能しません。 -
更新はクライアント駆動型: ACM は ACME 証明書を自動的に更新しません。ACME クライアントは、既存の証明書の有効期限が切れる前に新しい証明書をリクエストする必要があります。
ACME 証明書の表示
ACM コンソールで、フィルターを使用して ACME キーペアオリジンを持つ証明書を含めます。証明書の検索の詳細については、「」を参照してください証明書の検索。
ACME 証明書を一覧表示するには (AWS CLI)
CertificateKeyPairOrigins フィルターlist-certificatesで を使用します。
aws acm list-certificates \ --certificate-key-pair-origins ACME
ACME 証明書を検索するには (AWS CLI)
CertificateKeyPairOrigin フィルターsearch-certificatesで を使用して、追加の基準で ACME 証明書を検索します。
aws acm search-certificates \ --filter-statement '{"Filter": {"AcmCertificateMetadataFilter": {"CertificateKeyPairOrigin": "ACME"}}}'
AcmeEndpointArn または でフィルタリングすることで、特定のエンドポイントまたは ACME アカウントを通じて発行された証明書を検索することもできます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。
証明書の更新
ACME 証明書は ACM によって更新されません。ACME クライアントは、現在の証明書の有効期限が切れる前に新しい証明書をリクエストする責任があります。ほとんどの ACME クライアント (Certbot を含む) は、スケジュールされたタスク (cron ジョブや systemd タイマーなど) による自動更新をサポートしています。
更新中の ARN の安定性
ACME クライアントが証明書を更新すると、ACM は新しい発行が既存の証明書の更新か個別の証明書かを決定します。発行元が同じ証明書メタデータ (ドメイン名やキーアルゴリズムなど) を持つ同じ ACME アカウントである場合、ACM は新しい証明書を作成するのではなく、既存の証明書 ARN を更新します。これにより、更新全体で ARN が安定し、追跡と自動化が簡素化されます。
元の証明書が ACM から削除された場合 (たとえば、1 年以上前に期限切れになり、自動的に削除された場合)、同じメタデータを持つ後続の発行によって新しい証明書 ARN が作成されます。
Certbot 自動更新の例 (通常、Certbot のインストール中に自動的に設定されます)。
certbot renew --quiet