概要: AWS ACM証明書が`list-certificates`で表示されない、見つからないといった問題は多くのAWSユーザーが直面します。本記事では、その主な原因を深掘りし、効果的なトラブルシューティング方法をステップバイステップで解説します。リージョン、権限、フィルタリング、CLI/コンソールの違いなど、様々な角度から具体的な解決策を提供し、証明書を確実に視認できるまでの道のりをサポートします。
AWS ACM証明書リスト表示問題の全体像と確認すべき基本
「見えない」のはなぜ?ACM証明書リスト表示問題の根本原因
ACM証明書がリストに表示されない問題は、AWSのサービス特性による典型的な課題です。根本原因は主に、ACM証明書が特定の「リージョン」に紐づくリソースであること、そしてAWS CLIのコマンドがデフォルトで特定の「フィルタリング」を適用していることにあります。これらの基本を理解せずに作業を進めると、多くの時間を無駄にしてしまう可能性があります。
AWSマネジメントコンソールではすべての証明書が表示されるように見えることがありますが、CLIなどプログラムからの操作では、APIの仕様により、意図しないフィルタリングが適用されている場合が多いです。特に、自分で発行した証明書や、外部からインポートした証明書の場合、このフィルタリングの影響を受けやすいため注意が必要です。問題解決の第一歩として、まずはこれらの基本的な仕組みを把握しましょう。
この問題を理解する上で最も重要なポイントは、「ACM証明書はリージョンに依存するリソースである」という点です。例えば、CloudFrontで利用するために米国東部(バージニア北部、us-east-1)リージョンで発行した証明書は、他のリージョンでは見ることができません。これが多くのユーザーが直面する混乱の元となります。
まずはここを確認!リージョンと権限の重要性
証明書がリストに表示されない場合、まずAWSマネジメントコンソールで現在選択しているリージョンを確認してください。AWS CLIを使用している場合は、コマンド実行時に指定しているリージョン、または設定されているデフォルトリージョンを確認します。意図しないリージョンで操作しているケースが非常に多く、これだけで問題が解決することがあります。特に、CloudFrontで利用する証明書は、必ず米国東部(バージニア北部 / us-east-1)リージョンでリクエストまたはインポートする必要があります。
次に確認すべきは、操作を実行しているIAMユーザーまたはロールに必要な権限が付与されているかです。ACM証明書をリスト表示するためには、IAMポリシーで acm:ListCertificates アクションが許可されている必要があります。この権限が不足していると、たとえ正しいリージョンを選択していても、証明書は表示されません。IAMコンソールで、ご自身のユーザーやロールにアタッチされているポリシーを確認し、必要な権限が付与されているか検証してください。
これらの基本的な確認は、複雑なトラブルシューティングに進む前に必ず行うべきステップです。多くの場合、リージョンや権限のミスが原因であるため、まずは落ち着いてこれらの設定を見直すことが、迅速な問題解決への近道となります。特に、新しい環境やプロジェクトでACMを使い始めた際には、忘れずにチェックする習慣をつけましょう。
CLIユーザー必見!デフォルトフィルタリングの罠と対処の基本
AWS CLIを使用して aws acm list-certificates コマンドを実行している場合、証明書が表示されない原因の多くは、デフォルトで適用されるフィルタリングにあります。このコマンドは、オプションを指定しない場合、RSA_2048 アルゴリズムの証明書のみを返す仕様となっています(出典:AWS CLI コマンドリファレンス / 2023年10月時点の各技術ブログ・公式リファレンス等の補足に基づく)。つまり、ECDSAなどの異なるキータイプで発行された証明書は、デフォルトでは表示されません。
この問題を解決するには、--includes オプションを使って、表示したいキーアルゴリズムを明示的に指定する必要があります。例えば、ECDSA証明書を表示したい場合は、aws acm list-certificates --includes keyTypes=EC_prime256v1 のようにコマンドを実行します。これにより、デフォルトフィルタで隠されていた証明書が表示されるようになります。「インポート」した証明書の場合も、キータイプがデフォルトフィルタに合致せず表示されないケースが頻繁に発生するため、このオプションの指定が非常に重要です。
コンソールでは全ての証明書が見えるのに、CLIで実行すると見えない、という現象に遭遇したら、このデフォルトフィルタリングが原因である可能性が高いです。常に、自分が探している証明書のキータイプと、CLIコマンドのフィルタリングオプションを意識して作業を行うことが、無用なトラブルを避ける上で極めて重要になります。この知識は、ACM証明書のCLI操作における基本的なベストプラティクスと言えるでしょう。
出典:AWS CLI コマンドリファレンス、AWS Certificate Manager よくある質問
問題特定のための確認ステップと具体的な対処手順
ステップ1: AWSマネジメントコンソールでの確認とリージョン特定
まず、AWSマネジメントコンソールにログインし、ACM(Certificate Manager)サービスページを開いてください。画面上部にあるリージョンセレクタを確認し、現在選択されているリージョンが意図したリージョンであるか確認します。特にCloudFrontで利用する証明書は「米国東部(バージニア北部)us-east-1」で発行されるため、このリージョンを選択して証明書リストを確認することが重要です。他のリージョンで証明書を探しても見つからないのは当然の挙動です。
もし複数のリージョンで証明書を発行している可能性がある場合は、各リージョンを順に切り替えて、証明書リストを確認してみてください。ACMはリージョンごとの独立したサービスであるため、あるリージョンで発行された証明書が他のリージョンで表示されることはありません。この基本的な確認作業だけで、問題の約半分は解決することが多いです。
マネジメントコンソールで証明書が表示されれば、少なくとも証明書自体は存在しており、リージョンの選択ミスが原因であることが確定します。その後のCLIでのトラブルシューティングは、CLI側の設定やコマンドオプションに焦点を絞って進めることができます。まずは落ち着いて、コンソールでの現状確認からスタートしましょう。
ステップ2: IAMポリシーと権限の徹底確認
コンソールで適切なリージョンを選択しても証明書が表示されない場合、またはCLIで操作している場合は、IAMポリシーを確認し、必要な権限が付与されているかを徹底的に検証してください。ACM証明書をリスト表示するためには、使用しているIAMユーザーまたはロールに対して acm:ListCertificates アクションが許可されている必要があります。IAMコンソールに移動し、該当するユーザーやロールのポリシーを詳しく見てみましょう。
ポリシーが正しく設定されているかを確認する際は、Effect: Allow となっているか、そして Action に acm:ListCertificates が含まれているか(または acm:* のようにワイルドカードで許可されているか)をチェックします。また、Resource の指定にも注意が必要です。特定のARN(Amazon Resource Name)に限定されている場合、そのARNに含まれない証明書は表示されない可能性があります。最初はこの Resource を * に設定して、問題が解決するかどうかを試すのが有効なトラブルシューティング手法です。
権限の問題はセキュリティ上非常に重要ですが、トラブルシューティングにおいては見落とされがちです。特に、最小権限の原則に基づいて厳密なポリシーを適用している場合、必要な権限が不足していることが原因で「見えない」事態は頻繁に発生します。IAMポリシーの評価ツールなどを活用し、設定の意図と現状が一致しているかを確認することをお勧めします。
ステップ3: CLIコマンドのフィルタリングオプションを使いこなす
AWS CLIで aws acm list-certificates コマンドを使用しているにも関わらず証明書が表示されない場合、原因のほとんどはデフォルトのフィルタリングです。このコマンドは、オプションを指定しないと、デフォルトでRSA_2048アルゴリズムの証明書のみを表示します(出典:AWS CLI コマンドリファレンス / 2023年10月時点の各技術ブログ・公式リファレンス等の補足に基づく)。そのため、ECDSA証明書や、外部からインポートした証明書など、キータイプが異なるものは表示されません。
この問題を解決するには、--includes オプションを使って、表示したいキータイプを明示的に指定します。例えば、aws acm list-certificates --includes keyTypes=EC_prime256v1 と入力することで、ECDSA証明書もリストに含めて表示させることができます。また、--includes keyTypes=RSA_2048,EC_prime256v1 のように複数指定することも可能です。
さらに、期限切れの証明書や特定のステータスの証明書も、デフォルトでは表示されない場合があります。その際には、--certificate-statuses オプションを使用して、EXPIRED, PENDING_VALIDATION, ISSUED など、取得したいステータスを指定してみてください。これらのオプションを組み合わせることで、CLIでもコンソールと同様に、目的の証明書を正確に探し出すことが可能になります。CLIは強力なツールですが、その仕様を理解して適切にオプションを使用することが不可欠です。
出典:AWS CLI コマンドリファレンス、AWS サービス認可リファレンス
リージョン・権限・フィルタ等、状況別の解決策と具体例
リージョン問題: CloudFront証明書とマルチリージョン環境の落とし穴
ACM証明書が表示されない最も一般的な原因の一つが、リージョンの誤認識です。特にCloudFrontディストリビューションで利用するSSL/TLS証明書は、必ず米国東部(バージニア北部 / us-east-1)リージョンで発行またはインポートされている必要があります。これはCloudFrontのグローバルな特性によるもので、他のリージョンで証明書を要求してもCloudFrontに関連付けることはできませんし、当然そのリージョンでしか見ることができません。
もし、現在CloudFrontに関連付けたい証明書が見つからない場合は、AWSマネジメントコンソールでリージョンを「米国東部(バージニア北部)」に切り替えて、再度ACMの証明書リストを確認してください。AWS CLIを使用している場合は、コマンド実行時に --region us-east-1 オプションを明示的に指定するか、AWS CLIの設定ファイル(~/.aws/config)でデフォルトリージョンが正しく設定されているかを確認しましょう。
複数のAWSアカウントやリージョンで作業している場合、意図せず異なるリージョンで証明書を管理してしまっているケースもあります。証明書の ARN(Amazon Resource Name)にはリージョン情報が含まれているため、もし特定の証明書の ARN が分かっていれば、そのARNから正しいリージョンを特定することも可能です。状況に応じて、作業対象のリージョンが正しく設定されているかを常に意識することが重要です。
権限不足問題: IAMポリシーの適切な設定と確認方法
IAM権限の不足は、証明書が「見えない」問題の直接的な原因となり得ます。具体的には、IAMユーザーやロールにacm:ListCertificatesアクションが許可されていない場合に発生します。この問題に対処するには、まずIAMコンソールにアクセスし、現在使用しているユーザーまたはロールにアタッチされているポリシーを確認します。もしポリシーがアタッチされていない、または必要なアクションが含まれていない場合は、ポリシーを修正または新規作成し、acm:ListCertificates を許可する必要があります。
ポリシー設定の際には、Resource の指定にも注意が必要です。もし Resource が特定の証明書のARNに限定されている場合、それ以外の証明書はリスト表示されません。最初はワイルドカード "*" を使用して全てのACMリソースに対する ListCertificates 権限を付与し、問題が解決するかどうかを確認するのが効率的です。その後、セキュリティ要件に合わせて、最小権限の原則に基づき Resource を具体的なARNに絞り込むことを検討してください。
IAMポリシーの変更は、AWS環境全体のセキュリティに影響を与えるため、慎重に行う必要があります。変更を加える前に、現在のポリシーをバックアップし、変更後は意図した通りの動作になるか、そして不要な権限が付与されていないかを確認することが重要です。IAM Policy Simulatorなどのツールを利用すると、変更の影響を事前にシミュレーションできるため、活用をおすすめします。
CLIフィルタ問題: インポート証明書とECDSA証明書の表示テクニック
AWS CLIの list-certificates コマンドがデフォルトで RSA_2048 アルゴリズムの証明書のみを表示する仕様は、特に外部からインポートした証明書やECDSAアルゴリズムで発行された証明書を探している場合に大きな障害となります(出典:AWS CLI コマンドリファレンス / 2023年10月時点の各技術ブログ・公式リファレンス等の補足に基づく)。これらの証明書を表示させるためには、--includes オプションを適切に使用することが不可欠です。
具体的な対処法として、もしECDSA証明書を探している場合は、aws acm list-certificates --includes keyTypes=EC_prime256v1 のようにコマンドを実行します。これにより、ECDSA証明書もリストに含まれて表示されるようになります。また、インポートした証明書がどのキータイプか不明な場合は、複数のキータイプをカンマ区切りで指定することも可能です。例えば、--includes keyTypes=RSA_2048,EC_prime256v1,EC_secp384r1 のように試すことができます。
さらに、証明書のステータスもフィルタリングされることがあります。期限切れの証明書や検証中の証明書を探している場合は、--certificate-statuses EXPIRED,PENDING_VALIDATION,ISSUED のように certificate-statuses オプションを追加して、目的のステータスを含める必要があります。これらのCLIオプションを組み合わせることで、どんな種類のACM証明書でも、目的のものを確実にリスト表示させることが可能になります。
出典:AWS CLI コマンドリファレンス、AWS サービス認可リファレンス
証明書が見つからない時の最終確認チェックリスト:
- 正しいリージョンで確認していますか?(特にCloudFront用は
us-east-1) - 使用しているIAMユーザー/ロールに
acm:ListCertificates権限がありますか? - CLIを使用している場合、
--includes keyTypes=...オプションで目的のキータイプを含めていますか? - インポートした証明書の場合、デフォルトフィルタリングに引っかかっていませんか?
- 証明書の有効期限が切れていませんか?(ACMパブリック証明書の有効期限は13か月。出典:AWS Certificate Manager よくある質問)
よくある誤解と失敗を防ぐための重要ポイント
コンソールとCLIの挙動差異: 見え方が違うのはバグじゃない!
AWSマネジメントコンソールではACM証明書がすべて表示されるように見える一方で、AWS CLIで list-certificates コマンドを実行すると一部の証明書しか表示されない、という経験は多くのユーザーがするものです。これはバグではなく、コンソールとCLIの設計思想およびAPIのデフォルト挙動の違いに起因します。コンソールはユーザーフレンドリーなGUIを提供するため、より広範な情報表示を優先する傾向があります。
一方、AWS CLIの list-certificates APIは、パフォーマンス最適化や特定のユースケースを想定し、デフォルトで RSA_2048 のキータイプにフィルタリングをかけています(出典:AWS CLI コマンドリファレンス / 2023年10月時点の各技術ブログ・公式リファレンス等の補足に基づく)。そのため、ECDSA証明書や、外部からインポートされた異なるキータイプの証明書は、CLIではオプションを指定しない限りリストに現れません。
この差異を理解しておくことで、「コンソールでは見えるのにCLIでは見えない」という状況に遭遇しても、慌てずに適切なCLIオプション(例: --includes keyTypes=EC_prime256v1)を試すことができるようになります。両者の挙動の違いを認識し、それぞれに合わせたアプローチを取ることが、効率的なトラブルシューティングと運用には不可欠です。
「インポート証明書」がリストされない理由と見つけ方
ACMで自動発行した証明書ではなく、外部で発行してACMに「インポート」した証明書がリストに表示されないという問題も頻繁に発生します。これは、多くの場合、インポートした証明書のキーアルゴリズムが、AWS CLIの list-certificates コマンドのデフォルトフィルタである RSA_2048 に合致しないために起こります。インポート証明書は、様々なキータイプやサイズで発行されている可能性があるため、この問題に遭遇しやすいです。
インポート証明書が見つからない場合は、AWS CLIで aws acm list-certificates --includes keyTypes=RSA_2048,EC_prime256v1,EC_secp384r1,EC_secp521r1 のように、考えられる全てのキータイプを --includes keyTypes オプションで指定して検索してみてください。また、証明書のステータスも考慮し、--certificate-statuses ALL オプションを追加して、すべてのステータスの証明書を表示させることも有効です。
もしキータイプが全く分からない場合は、マネジメントコンソールで「インポート済み」のステータスを持つ証明書を探し、詳細からキーアルゴリズムを確認するのが確実な方法です。CLIでの操作に慣れていない場合は、まずコンソールで情報を取得し、その情報を元にCLIコマンドを構築するという流れも有効なアプローチとなります。
ACMパブリック証明書の有効期限と自動更新の落とし穴
ACMで発行されるパブリック証明書の有効期限は13か月です(出典:AWS Certificate Manager よくある質問 / 2026年6月時点)。この比較的短い有効期限と、ACMの自動更新機能には注意が必要です。ACMは通常、証明書の有効期限が切れる前に自動で更新を行いますが、ドメインのDNS検証に問題がある場合や、特定のリソース(例えばELBやCloudFront)に証明書がアタッチされていない場合、自動更新に失敗することがあります。
期限切れの証明書は、デフォルトでは list-certificates コマンドで表示されない場合があります。そのため、もし証明書が見つからない原因が期限切れであると疑われる場合は、--certificate-statuses EXPIRED,ISSUED のようにオプションを指定して、期限切れの証明書も表示させるようにしてください。また、自動更新が失敗している場合は、Eメール通知が来ている可能性がありますので、AWSアカウントのルートメールアドレスを確認することも重要です。
証明書の有効期限切れは、サービス停止に直結する深刻な問題です。定期的にACMコンソールやAWS Health Dashboardで証明書のステータスを確認し、期限切れや更新失敗のアラートに注意を払うようにしましょう。特に、DNS検証を利用している場合は、ドメインのネームサーバー設定が変更されていないか、CNAMEレコードが正しく残っているかを定期的にチェックすることが重要です。
出典:AWS Certificate Manager よくある質問、AWS CLI コマンドリファレンス
CloudFront証明書は「us-east-1」以外では存在しません。
CloudFrontで利用するACM証明書は、必ず米国東部(バージニア北部)リージョンで発行またはインポートされます。他のリージョンで探しても見つからないのは、AWSの仕様によるものです。この特性を理解し、必ずus-east-1で確認するようにしてください。
【ケース】権限不足による表示問題から学ぶベストプラクティス
架空のケーススタディ: 開発環境で証明書が見つからないAさんの場合
ここでは、架空のケースとして、新任のAWS開発者Aさんが、開発環境のWebサーバーにHTTPSを設定しようとして、ACMに発行済みの証明書がリストに表示されないという問題に直面した状況を考えます。Aさんは、Webサーバーが稼働しているリージョンでAWSマネジメントコンソールを開きましたが、目的のドメインの証明書が見つかりません。CLIで aws acm list-certificates を実行しても同様にリストが空でした。
Aさんは、まずリージョンの間違いを疑い、CloudFront用でないにも関わらず us-east-1 も確認しましたが、やはり見当たりません。その後、AWS管理者Bさんに相談したところ、「開発チーム用のIAMロールが最近更新された」との情報がありました。Aさんが使用しているIAMロールのポリシーを確認すると、acm:ListCertificates アクションが含まれていませんでした。
このケースでは、AさんのIAMロールに必要な権限が付与されていなかったことが原因で、ACM証明書がリスト表示されませんでした。管理者がIAMポリシーを更新し、acm:ListCertificates を許可する記述を追加したところ、Aさんは無事に証明書をリスト表示できるようになり、WebサーバーへのHTTPS設定を進めることができました。
権限不足問題の根本原因と推奨される確認手順
Aさんのケースのように、権限不足による表示問題の根本原因は、IAMポリシーが最小権限の原則に基づいて厳しく設定されすぎているか、または誤って必要な権限が削除されたことにあります。特に、開発環境やテスト環境では、セキュリティを意識するあまり、意図せず必要な操作権限まで排除してしまうことがあります。
このような問題を未然に防ぎ、迅速に解決するための推奨される確認手順は以下の通りです。まず、ACM証明書のリスト表示ができないことに気づいたら、IAMコンソールで、ご自身が現在使用しているIAMユーザーまたはロールにアタッチされているポリシーを確認します。次に、そのポリシーのJSON定義を確認し、acm:ListCertificates アクションが Effect: Allow となっているか、また Resource が適切に設定されているか(最初は * で問題がないか確認するのが良いでしょう)をチェックします。
もし、ポリシーに必要な権限が含まれていない場合は、AWS管理者に連絡し、IAMポリシーの更新を依頼してください。開発者自身がIAMポリシーを変更できない場合も多いため、権限管理のプロセスを理解し、適切な窓口に協力を求めることが重要です。定期的なIAMポリシーのレビューも、将来的な問題を避ける上で有効なプラクティスです。
失敗から学ぶ!セキュアな権限管理のベストプラクティス
Aさんのケースから学ぶべきベストプラクティスは、IAMポリシーの適切な設計と、定期的なレビュー、そしてトラブルシューティングにおける権限確認の重要性です。まず、IAMポリシーは「最小権限の原則」に従い、必要最低限の権限のみを付与することが基本です。しかし、これが運用を妨げないように、一般的な操作(例: リソースのリスト表示)に必要な権限は、基本的なロールに含めておくことを検討すべきです。
特に、開発チームや運用チームが新しいサービスやリソースにアクセスする必要が生じた際には、必要な権限が速やかに付与されるプロセスを確立しておくことが重要です。事前に定義されたロールや、自動化された権限付与システムを導入することも有効です。また、IAM Policy Simulatorのようなツールを活用して、変更が実際にどのような影響を与えるかを事前にテストする習慣をつけましょう。
さらに、定期的にIAMポリシーをレビューし、不要になった権限を削除したり、セキュリティ要件の変化に合わせて更新したりすることも不可欠です。これにより、過剰な権限付与を防ぎつつ、必要な操作がスムーズに行えるバランスの取れた権限管理を実現できます。トラブル発生時には、技術的な問題だけでなく、常にIAM権限の問題もチェックリストの最上位に置くことが、迅速な解決につながるでしょう。
出典:AWS サービス認可リファレンス
まとめ
よくある質問
Q: list-certificatesが空になる主な原因は?
A: 最も一般的な原因は、参照しているAWSリージョンが間違っていることです。また、IAM権限不足、適用されたフィルター、または証明書が期限切れである可能性も考えられます。
Q: 別のリージョンの証明書を確認するには?
A: AWS CLIを使用する場合、`–region`オプションで明示的にリージョンを指定します。コンソールでは、画面右上のリージョンセレクターから確認したいリージョンを選択してください。
Q: list-certificatesとdescribe-certificateの違いは?
A: list-certificatesは登録されている証明書の概要リストを返します。一方、describe-certificateは特定のARNを持つ証明書の詳細なメタデータを取得するために使用します。
Q: 期限切れの証明書もリストに表示されますか?
A: はい、list-certificatesコマンドはデフォルトで期限切れの証明書も表示します。表示から除外したい場合は、`–certificate-statuses`オプションでフィルタリングが必要です。
Q: IAM権限不足で証明書が見えない場合はどうすれば?
A: `acm:ListCertificates`アクションと`acm:DescribeCertificate`アクションが許可されているかIAMポリシーを確認してください。必要に応じて、適切なポリシーを追加または修正します。
