AWS Certificate Manager で自動化する SSL/TLS 証明書管理 - 発行からローテーションまで
ACM によるパブリック証明書の無料発行、DNS 検証、自動更新、ALB ・ CloudFront へのデプロイを解説します。
ACM の概要
ACM は SSL/TLS 証明書の発行、管理、デプロイを自動化するサービスです。パブリック証明書は無料で発行でき、ALB、NLB、CloudFront、API Gateway、Elastic Beanstalk に数クリックでデプロイできます。Let's Encrypt と異なり、証明書の更新が完全に自動化されており、cron ジョブや certbot の管理が不要です。EC2 インスタンスに直接証明書をインストールすることはできないため、EC2 で HTTPS を終端する場合は ALB を前段に配置するか、Let's Encrypt を使用します。
DNS 検証と自動更新
証明書の検証方式は DNS 検証とメール検証の 2 種類があります。DNS 検証では ACM が指定する CNAME レコードを Route 53 (または外部 DNS) に追加します。Route 53 を使用している場合はコンソールからワンクリックで追加できます。メール検証はドメインの管理者メールアドレスに確認メールを送信する方式ですが、更新のたびに手動承認が必要なため、DNS 検証が強く推奨されます。DNS 検証レコードは一度追加すれば削除しない限り有効で、証明書の自動更新に使われ続けます。自動更新は証明書の有効期限の 60 日前から開始され、DNS 検証レコードが存在し、証明書が AWS リソースに関連付けられている限り自動的に更新されます。証明書の有効期間は 13 か月で、更新後の証明書は ALB や CloudFront に自動的に反映されます。
プライベート証明書と証明書の透明性
ACM Private CA と統合すると、組織内部のサービス間通信用にプライベート証明書を発行できます。パブリック証明書は Certificate Transparency (CT) ログに記録されるため、内部サービスのホスト名を公開したくない場合はプライベート証明書を使用します。 ACM のインポート機能で外部 CA から発行された証明書を管理することも可能ですが、自動更新は ACM 発行の証明書のみに対応します。証明書の有効期限が近づくと CloudWatch メトリクスと EventBridge イベントで通知され、更新漏れを防止します。リージョンごとに証明書を発行する必要があるため、マルチリージョン構成では各リージョンで証明書を管理します。 ACM のベストプラクティスを網羅的に学ぶなら、技術書 (Amazon)を参照してください。
ACM の料金
ACM のパブリック証明書は無料で発行・更新できます。ALB、CloudFront、API Gateway へのデプロイにも追加料金は発生しません。ACM Private CA は月額約 400 ドル/CA で、発行した証明書数に応じた追加料金 (最初の 1,000 枚は 1 枚あたり 0.75 ドル) が発生します。短期証明書モード (有効期間 7 日以下) では CA の月額料金が約 50 ドルに割引されます。パブリック証明書で対応できるユースケースでは ACM の無料証明書を活用し、Private CA は mTLS や内部サービス認証など必要な場合に限定してコストを管理します。
デプロイ先ごとの構成パターン
ACM の証明書は、利用する AWS リソースによって配置するリージョンが変わる点に注意が必要です。CloudFront に適用する証明書は、グローバル配信の仕組み上、バージニア北部リージョンで発行する必要があります。一方、ALB や API Gateway などのリージョナルなリソースには、そのリソースと同じリージョンの証明書を使います。この違いを理解しておかないと、せっかく発行した証明書がデプロイ先で選択できず戸惑うことになります。構成図を描く段階で、どのリソースにどのリージョンの証明書を割り当てるかを整理しておくと、迷わず構築できます。
更新失敗を防ぐ運用
ACM の自動更新は便利ですが、いくつかの条件が崩れると更新に失敗します。DNS 検証用の CNAME レコードを削除してしまうと、更新の検証ができなくなるため、このレコードは消さずに残しておきます。また、証明書が AWS リソースに関連付けられて実際に使われている状態であることも、自動更新の前提です。使われていない証明書は自動更新の対象外になることがあります。有効期限が近づくとイベントで通知されるため、これを監視して更新漏れを早期に察知します。条件を満たし続ける運用を徹底することで、証明書切れによる障害を防げます。
ワイルドカードと複数ドメイン証明書
ACM では、一枚の証明書で複数のホスト名を保護できます。ワイルドカード証明書を使えば、サブドメイン全体を一括でカバーでき、サブドメインが増えても証明書を発行し直す必要がありません。異なるドメイン名をまとめて一枚に含める複数ドメイン (SAN) 証明書も発行でき、関連する複数サイトを効率的に管理できます。一枚に含められるドメイン数には上限があるため、構成が大きくなる場合は、ワイルドカードと個別指定をどう組み合わせるかを設計します。証明書の枚数を抑えることで、管理対象が減り、更新管理もシンプルになります。
プライベート CA と相互 TLS
外部に公開しない内部サービス間の通信には、プライベート CA から発行した証明書が適します。パブリック証明書は透明性ログに記録され、ホスト名が公開されてしまうため、内部の名前を隠したい場合はプライベート証明書を選びます。さらに、クライアントとサーバーが互いに証明書を提示して認証し合う相互 TLS (mTLS) を構成すれば、許可された相手だけが通信できる強固な認証を実現できます。プライベート CA は維持に費用がかかるため、パブリック証明書で足りる用途と、内部認証や mTLS が必要な用途を切り分けて、必要な範囲で導入します。
まとめ
ACM はパブリック SSL/TLS 証明書の発行から更新までを無料で自動化するサービスです。DNS 検証を設定すれば手動介入なしで証明書が維持され、ALB や CloudFront へのデプロイもシームレスに行えます。Private CA との統合で内部サービスの mTLS 認証にも対応し、組織全体の証明書管理を一元化します。