証明書管理と HTTPS 化 - AWS Certificate Manager による TLS 証明書の自動運用
AWS Certificate Manager (ACM) を使った TLS/SSL 証明書の発行・自動更新・デプロイを解説。CloudFront・ALB・API Gateway との統合、DNS 検証、プライベート CA の活用まで紹介します。
TLS 証明書管理の課題と ACM の役割
Web サイトや API の HTTPS 化には TLS/SSL 証明書が不可欠ですが、従来の証明書管理には多くの運用負荷が伴います。認証局 (CA) への申請、ドメイン所有権の検証、証明書のインストール、そして最も厄介なのが有効期限切れ前の更新作業です。証明書の更新忘れによるサービス停止は、実際に多くの企業で発生しているインシデントです。AWS Certificate Manager (ACM) はこれらの課題を根本的に解決します。パブリック TLS 証明書を無料で発行し、DNS 検証を設定すれば更新を完全に自動化します。ACM が発行する証明書の有効期間は 13 か月で、有効期限の 60 日前から自動更新が試行されます。DNS 検証用の CNAME レコードが正しく設定されていれば、人手を介さずに証明書が更新され続けます。Azure の App Service Managed Certificate も無料の証明書を提供しますが、対象が App Service に限定されます。ACM は CloudFront、ALB、NLB、API Gateway、App Runner など AWS の主要なエッジ/ロードバランサーサービスに幅広く対応しています。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
証明書の発行と検証方法
ACM での証明書発行は、ドメイン名の指定と検証方法の選択だけで完了します。検証方法は DNS 検証とメール検証の 2 種類があり、DNS 検証が推奨されます。DNS 検証では、ACM が指定する CNAME レコードを DNS に追加することでドメイン所有権を証明します。Route 53 を使用している場合、マネジメントコンソールからワンクリックで CNAME レコードを作成できます。 ```yaml # SAM テンプレートでの ACM 証明書定義 Resources: Certificate: Type: AWS::CertificateManager::Certificate Properties: DomainName: example.com SubjectAlternativeNames: - '*.example.com' ValidationMethod: DNS DomainValidationOptions: - DomainName: example.com HostedZoneId: !Ref HostedZone ``` ワイルドカード証明書 (*.example.com) を発行すれば、api.example.com、www.example.com、app.example.com など任意のサブドメインを 1 枚の証明書でカバーできます。Subject Alternative Names (SAN) で複数のドメイン名を 1 枚の証明書に含めることも可能です。CloudFront で使用する証明書は us-east-1 リージョンで発行する必要がある点に注意してください。ALB や API Gateway で使用する証明書は、リソースと同じリージョンで発行します。
AWS サービスとの統合
ACM 証明書は、AWS の各サービスに直接関連付けて使用します。CloudFront ディストリビューションでは、カスタムドメインの HTTPS 化に ACM 証明書を指定します。ALB (Application Load Balancer) では、HTTPS リスナーに ACM 証明書を設定し、TLS 終端をロードバランサーで行います。SNI (Server Name Indication) により、1 つの ALB で複数のドメインの証明書を使い分けることも可能です。API Gateway のカスタムドメインでも ACM 証明書を使用し、api.example.com のような独自ドメインで API を公開できます。App Runner も ACM 証明書によるカスタムドメインの HTTPS 化に対応しています。いずれのサービスでも、証明書の秘密鍵はユーザーに公開されず、AWS が安全に管理します。証明書の自動更新時も、関連付けられたサービスに自動的に反映されるため、ダウンタイムは発生しません。
Private CA と高度なユースケース
ACM Private CA (Private Certificate Authority) は、組織内部で使用するプライベート証明書を発行するためのマネージド CA サービスです。社内システム間の mTLS (相互 TLS) 認証、IoT デバイスの証明書管理、VPN 接続の認証などに使用します。Private CA の料金は月額 400 USD と高額ですが、自前で CA を構築・運用するコスト (HSM、運用人員、監査対応) と比較すれば合理的です。短期証明書モードでは、有効期間 7 日以下の証明書を発行でき、月額料金が不要になります (証明書あたりの従量課金のみ)。証明書の透明性 (Certificate Transparency) ログへの登録もオプションで設定でき、パブリック証明書と同等の監査性を確保できます。ACM はインポート証明書にも対応しており、他の CA (Let's Encrypt、DigiCert など) で発行した証明書を ACM にインポートして ALB や CloudFront で使用できます。ただし、インポート証明書は自動更新の対象外となるため、ACM で直接発行する方が運用負荷は低くなります。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ - ACM の活用指針
AWS Certificate Manager は、TLS 証明書の発行・更新・デプロイを完全に自動化するサービスです。パブリック証明書は無料で発行でき、DNS 検証による自動更新で証明書切れのリスクを排除します。CloudFront・ALB・API Gateway・App Runner など主要サービスとの統合により、HTTPS 化のハードルを大幅に下げます。ワイルドカード証明書と SAN により、複数ドメインを効率的に管理できます。Private CA は社内システムや IoT デバイスの証明書管理に対応し、エンタープライズのセキュリティ要件を満たします。Web サイトや API を公開する際は、ACM による証明書管理を標準プラクティスとして採用することを推奨します。
AWS の優位点
- パブリック TLS 証明書を無料で発行でき、CloudFront・ALB・API Gateway・App Runner などに数クリックで関連付け可能
- DNS 検証 (CNAME レコード) を設定すれば証明書の更新が完全自動化され、手動での更新作業や証明書切れのリスクを排除
- ワイルドカード証明書 (*.example.com) に対応し、サブドメインの追加時に新たな証明書発行が不要
- ACM Private CA でプライベート証明書を発行でき、社内システムや IoT デバイスの mTLS 認証に活用可能
- CloudFormation / SAM テンプレートで証明書の発行とリソースへの関連付けを IaC で管理できる
- Azure の App Service Managed Certificate は対象が App Service に限定されるが、ACM は CloudFront・ALB・API Gateway・NLB・App Runner など幅広いサービスに対応
- 証明書の発行・更新・管理に追加料金は不要 (Private CA は月額 400 USD)