ACM ACMEエンドポイントで発行した証明書をCertbotで失効させ、OCSP/CRLへの反映を確認してみた
はじめに
前回の記事では、ACM ACMEエンドポイントを使ってCertbotでパブリック証明書を取得し、EC2上のNginx / Apacheに適用するところまでを検証しました。
今回はその続編として、証明書ライフサイクルの後半を検証します。具体的には、Certificate Transparency(CT)ログへの登録確認、OCSP / CRLによる証明書ステータスの確認、Certbotによる失効処理を扱います。
ACM ACME証明書に対してサポートされるAPIとサポートされないAPIを整理すると、以下の通りです(2026年7月時点)。
| API | サポート状況 | 備考 |
|---|---|---|
| DescribeCertificate | ✅ | Status, RevokedAt 等を確認可能 |
| GetCertificate | ✅ | 証明書チェーンを取得可能 |
| SearchCertificates | ✅ | CertificateKeyPairOrigin="ACME" でフィルタ可能 |
| ListCertificates | ❌ | ACME証明書は表示されない |
| ExportCertificate | ❌ | エクスポート対象外 |
| RevokeCertificate | ❌ | ACME証明書には使用不可(Certbotで失効する) |
| RenewCertificate | ❌ | ACME証明書には使用不可(Certbotで更新する) |
| ResendValidationEmail | ❌ | ACME証明書には使用不可 |
ACM ACME証明書の特性やサポートされるオペレーションの詳細は公式ドキュメントを参照してください。
検証環境
- リージョン: ap-northeast-1
- ドメイン:
acme-demo.cm.suama.net(Route 53管理) - EC2: Amazon Linux 2023 / t3.small(SSM接続)
- ACMEクライアント: Certbot
- 確認ツール: openssl, curl
前回記事と同じ構成のACMEエンドポイント・ドメインバリデーション・EC2を再作成し、証明書を新規発行した状態から検証を開始しています。
CT ログへの登録確認
証明書のSCT(Signed Certificate Timestamp)拡張を確認します。
openssl x509 -in /etc/letsencrypt/live/acme-demo.cm.suama.net/fullchain.pem \
-noout -ext ct_precert_scts
CT Precertificate SCTs:
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : C2:31:7E:57:45:19:A3:45:EE:7F:38:DE:B2:90:41:EB:
C7:C2:21:5A:22:BF:7F:D5:B5:AD:76:9A:D9:0E:52:CD
Timestamp : Jul 7 05:39:14.151 2026 GMT
Extensions: none
Signature : ecdsa-with-SHA256
...
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : C8:A3:C4:7F:C7:B3:AD:B9:35:6B:01:3F:6A:7A:12:6D:
E3:3A:4E:43:A5:C6:46:F9:97:AD:39:75:99:1D:CF:9A
Timestamp : Jul 7 05:39:14.186 2026 GMT
Extensions: none
Signature : ecdsa-with-SHA256
...
2つのSCTが埋め込まれていました。Log IDから、それぞれDigiCertの「Wyvern2026h2」とSectigoの「Tiger2026h2」に記録されていることがわかります。
ACM ACME証明書も通常のパブリック証明書と同様に、発行時にCTログへ自動的に記録されます。
crt.shでドメイン名を検索すると、今回発行した証明書が確認できます。
https://crt.sh/?q=acme-demo.cm.suama.net
| issuer | serial | not_before | not_after |
|---|---|---|---|
| Amazon ECDSA 256 S07 | 4072b57d2242886f792394b70296e686 | 2026-07-07 | 2026-08-21 |
失効前の状態確認(OCSP / CRL)
OCSP レスポンスの確認
証明書からOCSPレスポンダーのURLを抽出します。
openssl x509 -in /etc/letsencrypt/live/acme-demo.cm.suama.net/fullchain.pem \
-noout -ocsp_uri
http://ocsp.r1001.amazontrust.com
中間CA証明書を取得し、OCSPレスポンダーに問い合わせます。
# AIA拡張に記載されていたCA Issuers URLから中間CA証明書をダウンロード
curl -s http://crt.r1001.amazontrust.com/e2s07.cer | \
openssl x509 -inform DER -out /tmp/issuer.pem
# OCSP問い合わせ
openssl ocsp \
-issuer /tmp/issuer.pem \
-cert /etc/letsencrypt/live/acme-demo.cm.suama.net/fullchain.pem \
-url http://ocsp.r1001.amazontrust.com
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Responder Id: C = US, O = Amazon, CN = Amazon ECDSA 256 S07
Produced At: Jul 7 05:44:20 2026 GMT
Responses:
Certificate:
Serial Number: 4072B57D2242886F792394B70296E686
Cert Status: good
This Update: Jul 7 05:44:20 2026 GMT
Next Update: Jul 14 04:44:20 2026 GMT
Response verify OK
WARNING: no nonce in response
Cert Statusが good で、証明書が有効であることを確認できました。Next Updateは7日後に設定されています。WARNING: no nonce in response は、今回のOCSPレスポンスにnonceが含まれていないことを示す警告です。署名検証(Response verify OK)自体は成功しています。
CRL の確認
証明書からCRL配布ポイントを抽出します。
openssl x509 -in /etc/letsencrypt/live/acme-demo.cm.suama.net/fullchain.pem \
-noout -ext crlDistributionPoints
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.r1001.amazontrust.com/e2s07/9nABuMVvxLz.crl
CRLをダウンロードして内容を確認します。
curl -s http://crl.r1001.amazontrust.com/e2s07/9nABuMVvxLz.crl -o /tmp/crl.der
openssl crl -inform DER -in /tmp/crl.der -noout -lastupdate -nextupdate
lastUpdate=Jul 7 04:27:34 2026 GMT
nextUpdate=Jul 8 05:27:34 2026 GMT
当該証明書のシリアル番号がCRLに含まれていないことを確認します。
openssl crl -inform DER -in /tmp/crl.der -text | \
grep -i "4072B57D2242886F792394B70296E686"
出力なし(シリアル番号が見つからない)であり、失効前のため正常です。
Certbot による失効
今回発行した証明書をCertbotで失効させます。ACMEプロトコルの revokeCert を使用します。
IAM ロールへの権限追加
失効を実行するには、EAB作成時に指定したIAMロールへ acm:RevokeCertificate アクションの許可を追加する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"acm:RequestCertificate",
"acm:DescribeCertificate",
"acm:GetCertificate",
"acm:RevokeCertificate"
],
"Resource": "*"
}
]
}
また、IAMロールの信頼ポリシーには sts:AssumeRole に加えて sts:SetSourceIdentity と sts:TagSession のアクションも必要です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "acm-acme.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
失効の実行
certbot revoke \
--cert-path /etc/letsencrypt/live/acme-demo.cm.suama.net/fullchain.pem \
--server https://acm-acme-enroll.ap-northeast-1.api.aws/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/directory \
--non-interactive --no-delete-after-revoke \
--reason unspecified
Congratulations! You have successfully revoked the certificate.
--no-delete-after-revoke で失効後も証明書ファイルをローカルに残しています。
失効後の状態確認(OCSP / CRL / ACM)
ACM での即時反映
まずACM側での状態を確認します。
aws acm describe-certificate \
--certificate-arn arn:aws:acm:ap-northeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--query "Certificate.{Status:Status,RevokedAt:RevokedAt,RevocationReason:RevocationReason,KeyPairOrigin:CertificateKeyPairOrigin}"
{
"Status": "REVOKED",
"RevokedAt": "2026-07-07T14:47:50.718000+09:00",
"RevocationReason": "UNSPECIFIED",
"KeyPairOrigin": "ACME"
}
ACM内部では失効処理の直後にStatusが REVOKED に変わりました。
OCSP レスポンスの確認(失効後)
失効後はシリアル番号を直接指定する -serial で問い合わせます(-cert でも同じ結果が得られます)。
失効から約3.5時間後に確認したところ、OCSPレスポンスが revoked に切り替わっていました。以下はステータス部分の抜粋です。
openssl ocsp \
-issuer /tmp/issuer.pem \
-serial 0x4072B57D2242886F792394B70296E686 \
-url http://ocsp.r1001.amazontrust.com
0x4072B57D2242886F792394B70296E686: revoked
This Update: Jul 7 09:20:29 2026 GMT
Next Update: Jul 14 08:20:29 2026 GMT
Reason: unspecified
Revocation Time: Jul 7 05:47:50 2026 GMT
失効直後(20分時点)ではキャッシュされたレスポンス(Produced At が失効前の05:44:20のまま)が返され、Cert Status は good でした。実際の反映は20分〜3.5時間の間と考えられますが、Next Update(7日後)を待たずにレスポンスが更新されていました。
CRL の確認(失効後)
curl -s http://crl.r1001.amazontrust.com/e2s07/9nABuMVvxLz.crl -o /tmp/crl_after.der
openssl crl -inform DER -in /tmp/crl_after.der -noout -lastupdate -nextupdate
lastUpdate=Jul 7 04:27:34 2026 GMT
nextUpdate=Jul 8 05:27:34 2026 GMT
失効の約10分後(14:57 JST)にCRLを取得したところ、まだ更新されていませんでした。数分後に再取得すると、当該シリアル番号が追加された新しいCRLに切り替わっていました。
curl -s http://crl.r1001.amazontrust.com/e2s07/9nABuMVvxLz.crl -o /tmp/crl_after.der
openssl crl -inform DER -in /tmp/crl_after.der -text | \
grep -A1 "4072B57D2242886F792394B70296E686"
Serial Number: 4072B57D2242886F792394B70296E686
Revocation Date: Jul 7 05:47:50 2026 GMT
nextUpdateは翌日(約24時間後)でしたが、今回の検証ではnextUpdateを待たずに更新済みのCRLを取得できました。
サポートされない API の挙動
「はじめに」の表で❌としたAPIを実行し、実際のエラーメッセージを確認します。
aws acm export-certificate \
--certificate-arn arn:aws:acm:ap-northeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--passphrase "test"
An error occurred (ValidationException) when calling the ExportCertificate operation:
Certificate ARN: arn:aws:acm:ap-northeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
is not an export enabled certificate
ExportCertificate は「export enabled certificate ではない」というエラーでした。
残り3つ(RevokeCertificate、RenewCertificate、ResendValidationEmail)は共通のエラーメッセージが返されます。RevokeCertificate を例示します。
aws acm revoke-certificate \
--certificate-arn arn:aws:acm:ap-northeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--revocation-reason UNSPECIFIED
An error occurred (ValidationException) when calling the RevokeCertificate operation:
Certificate ARN: arn:aws:acm:ap-northeast-1:xxxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
with Certificate Key Pair Origin of ACME is not supported for this action
RenewCertificate、ResendValidationEmail も同様に「Certificate Key Pair Origin of ACME is not supported for this action」が返されました。
注意事項・Tips
- OCSP / CRL の失効反映は即時ではない: 今回の検証ではOCSPが3.5時間以内、CRLが十数分程度で反映されました。ACM上で失効処理が反映されたことを即時に確認したい場合は
aws acm describe-certificateを使用してください。 list-certificatesに ACME 証明書は表示されない: ACME証明書を検索するにはsearch-certificatesAPIを使い、CertificateKeyPairOriginをACMEでフィルタします。- ファイアウォール要件: 今回確認したOCSP / CRL / CA Issuersのエンドポイントはいずれも
amazontrust.com配下のHTTP/80でした(ocsp.r1001.amazontrust.com等)。ACMEエンドポイント自体はacm-acme-enroll.<region>.api.awsのHTTPS/443です。今回の検証で使われたr1001.amazontrust.comはAmazon Trust Servicesの公式エンドポイントリストに未掲載ですが、リストには「not static and will change over time」と明記されており、個別ドメインではなくワイルドカードで許可してください。なお、公式ドキュメントでは*.amazontrust.comでの許可が推奨されていますが、今回の実URLはocsp.r1001.amazontrust.comのように2階層のサブドメインであるため、ファイアウォール製品の仕様によっては**.amazontrust.comやamazontrust.com配下全体の許可が必要になる場合があります。
まとめ
ACM ACMEエンドポイントで発行した証明書が、CT・OCSP・CRLといったパブリックCAの標準的な仕組みに対応していることを確認しました。発行時にはCTログへ記録され、証明書にはOCSPレスポンダーとCRL配布ポイントも含まれていました。
ELBやCloudFrontなどのACM統合サービスで利用する通常のACM証明書では、利用者が証明書ファイルや秘密鍵を直接扱う場面は多くありません。一方、ACM ACMEエンドポイントではCertbotなどのACMEクライアントで証明書を取得し、ACM統合サービス以外の環境にも適用できます。そのため、失効処理やOCSP / CRLへの反映を確認できることは、証明書ライフサイクル全体を扱ううえで重要です。
今回の検証では、Certbotによる失効、ACM上での REVOKED 反映、OCSP / CRLへの失効反映を一通り確認できました。なお、ACME経由の失効にはIAMロールに acm:RevokeCertificate 権限が必要ですが、この点は公式ドキュメントに明記されていません。頻繁に使う操作ではありませんが、発行後のライフサイクルまでサポートされていることを確認でき、ACM ACMEエンドポイントを安心して利用するための材料になりました。
参考リンク







