ACMで発行した証明書が削除できない

記事タイトルとURLをコピーする

こんにちは、Enterprise Cloud部 技術1課 宮形 です。

AWS Certificate Manager (以下ACM)で発行する SSL/TLS証明書 (以下証明書) ですが、使い終わったことで削除する際、エラーになる事が何度かあったので原因と解決方法をまとめてみました。

削除時のエラーメッセージ

エラーとしてはたいていの場合このようなものになります。

証明書を削除できませんでした Certificate arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX in account XXXXXXXXXXXX is in use.

原因・解決方法

他のAWSリソースで利用中・関連付けを削除する

ELBや Cognito、API Gateway、IAM 等のリソース内設定でACM証明書を利用するよう関連付けしていた場合、削除前に関連付けを解除するか、関連付け元AWSリソースを削除する必要があります。

どのAWSリソースで利用されているか分からない場合、CLIの describe-certificate コマンドで調べることができます。

aws acm describe-certificate --certificate-arn arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

以下結果の一部です。InUseBy のセクションで関連付け元AWSリソースのARNが表示されます。この例では acm-role というIAMロールで利用されているようでした。

        "NotBefore": "2023-08-14T00:00:00+00:00",
        "NotAfter": "2024-09-12T23:59:59+00:00",
        "KeyAlgorithm": "RSA-2048",
        "SignatureAlgorithm": "SHA256WITHRSA",
        "InUseBy": [
            "arn:aws:iam::XXXXXXXXXXXX:role/acm-role" ←★
        ],
        "Type": "AMAZON_ISSUED",
        "KeyUsages": [
            {
                "Name": "DIGITAL_SIGNATURE"
            },
            {

しばらく待ってから削除する

上記 利用中・関連付けの対応を行ったにもかかわらず引き続き削除がエラーとなる場合があります。途方に暮れましたが、30分ほど待ってから削除すると成功しました。 これはAWS公式ドキュメントでも所々説明されていますが、AWSの管理コンポーネントは結果整合性で動作しており、設定変更の反映に時間要する場合があるためと思われます。

一般的な IAM の問題のトラブルシューティング - AWS Identity and Access Management

CLI から削除する

これは私自身は遭遇したことはないのですが、AWSマネジメントコンソールでは削除エラーとなるが、CLIであれば削除できる場合があるようです。推測ですが、2. と同様 結果整合性 に関係しているのではないかと考えます。

CLIの delete-certificate コマンドを利用します。

aws acm delete-certificate --certificate-arn arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

AWSが管理する別アカウントのALBに関連付けされている

API Gateway 等でカスタムドメインを用いる場合、ACM で発行する証明書を関連付けします。この設定を削除したにもかかわらず、AWSが管理する見おぼえないAWSアカウントのALBに関連付けが残ってしまう場合があるようです。下記 re:Post で解説されていますのでご参照ください。

ACM 証明書エラー「証明書は使用中です」の解決 | AWS re:Post

上記サイトに記載の「解決方法」を行ってもエラーが続く場合、AWSサポートに問合せすることで解決する場合があるようです。 弊社のAWS請求代行サービスご利用のお客様は、弊社 サーバーワークス サポートセンター よりチケット起票のうえお問い合わせください。

ACM for Nitro Enclaves で利用していた証明書の設定が残っている

ACM for Nitro Enclaves という機能があり、EC2上 Nginx や Apache でACMの証明書を利用することができます。

この機能において、設定で IAMロールにACM証明書の関連付けを行う箇所があります。このIAMロールを削除した場合でも、関連付けが残ってしまいACM証明書が削除できない原因になります。

関連付けの解除は CLI の disassociate-enclave-certificate-iam-role コマンドで行います。

aws ec2 disassociate-enclave-certificate-iam-role  --certificate-arn arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --role-arn arn:aws:iam::XXXXXXXXXXXX:role/acm-role

まとめ

ACMで発行する証明書は利用料がかからないとはいえ、削除できずに残したままというのは精神衛生上よろしくないとは思います。 ネットで調べると解決例は出てくるのですが、まとまっていた方が役立ちやすいと思いましたのでBLOGとして紹介させていただきました。

本BLOGの内容が皆様の参考になれば幸いです。

宮形純平(執筆記事の一覧)

エンタープライズクラウド部 ソリューションアーキテクト1課

好きなお酒は缶チューハイと本格焼酎