security
A
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
ACM証明書 — DNS検証・Email検証・自動更新・使用制限
AWS Certificate Manager(ACM)の証明書発行、DNS検証とEmail検証の違い、ALB/CloudFrontでの使用方法、自動更新の仕組み、プライベート証明書、インポート証明書の管理を解説。
一言結論
ACM証明書はAWSサービス(ALB・CloudFront等)で使う限り無料で自動更新されるが、EC2インスタンスやオンプレミスサーバーには使えないため、用途に応じてインポート証明書やプライベートCAと使い分ける必要がある。
ACM の概要
AWS Certificate Manager(ACM)は、TLS/SSL証明書の発行・管理・更新を自動化するサービスだ。AWSサービスで使用する証明書は無料で発行できる。
ACM 証明書の特徴:
料金: AWSサービスで使用するACM証明書は無料
自動更新: 有効期限が近づくと自動で更新
対応: ELB(ALB/NLB), CloudFront, API Gateway, AppSync等
ACM 証明書が使えない場所:
→ EC2インスタンス(証明書をダウンロードできない)
→ オンプレミスサーバー
※ これらにはACMプライベートCAまたはインポート証明書を使う
証明書の発行(DNS検証)
DNS検証はRoute53を使う場合に特に有効で、自動化できる。
# 証明書のリクエスト(DNS検証)
aws acm request-certificate \
--domain-name example.com \
--validation-method DNS \
--subject-alternative-names "*.example.com" "www.example.com" \
--idempotency-token "cert-request-001"
# 証明書の詳細確認(DNS検証用CNAMEレコードを確認)
aws acm describe-certificate \
--certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx
DNS検証の手順:
1. ACMがCNAMEレコードを生成
例: _xxx.example.com → _yyy.acm-validations.aws.
2. Route53(またはDNSプロバイダー)にCNAMEを追加
3. ACMがDNSを確認 → 証明書発行(数分〜数十分)
4. 自動更新時も同じCNAMEを使って自動検証
Route53の場合: コンソールから1クリックでCNAMEを自動追加できる
Email検証
Email検証の手順:
1. ドメインのWHOIS登録メールアドレスへ確認メールを送信
2. admin@, administrator@, hostmaster@, webmaster@, postmaster@ にも送信
3. メール内のリンクをクリックして承認
制限:
→ 自動更新ができない(期限前に手動で再承認が必要)
→ DNS検証が可能なら DNS検証を使うべき
CloudFront で使用する証明書
CloudFrontに使用するACM証明書は us-east-1 リージョンで発行する必要がある。
# CloudFront用証明書は us-east-1 で発行
aws acm request-certificate \
--region us-east-1 \
--domain-name cdn.example.com \
--validation-method DNS
# CloudFrontディストリビューションに証明書を設定
aws cloudfront update-distribution \
--id DISTRIBUTION_ID \
--distribution-config '{
"ViewerCertificate": {
"ACMCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/xxx",
"SSLSupportMethod": "sni-only",
"MinimumProtocolVersion": "TLSv1.2_2021"
}
}'
SSL対応方式:
SNI(Server Name Indication): 推奨・無料
→ クライアントがTLSハンドシェイク時にホスト名を送信
→ 最新ブラウザはほぼ全対応
Dedicated IP: 月$600
→ 古いクライアント(IE on XP等)向け
→ 現在はほぼ不要
インポート証明書
既存の証明書や自己署名証明書をACMにインポートできる。
# 証明書のインポート
aws acm import-certificate \
--certificate fileb://certificate.pem \
--private-key fileb://private-key.pem \
--certificate-chain fileb://chain.pem
# インポート証明書は自動更新されない
# → 期限前に手動でインポートし直す必要がある
ACM プライベート CA
内部サービス用のプライベート証明書を発行する。
# プライベートCAの作成
aws acm-pca create-certificate-authority \
--certificate-authority-configuration '{
"KeyAlgorithm": "RSA_2048",
"SigningAlgorithm": "SHA256WITHRSA",
"Subject": {
"Country": "JP",
"Organization": "My Company",
"CommonName": "My Internal CA"
}
}' \
--certificate-authority-type "SUBORDINATE"
プライベートCA の用途:
→ EC2インスタンス間のmTLS通信
→ 内部APIの証明書
→ VPN証明書
料金: プライベートCA: $400/月、証明書: $0.75/証明書
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| CloudFront用ACM証明書のリージョン | us-east-1(バージニア北部)必須 |
| ALB用ACM証明書のリージョン | ALBと同じリージョン |
| 証明書の自動更新 | DNS検証のみ自動更新対応 |
| EC2に直接TLS証明書をインストール | ACM不可→インポートまたはLet’s Encrypt等 |
| 内部サービス間mTLS | ACM プライベートCA |
まとめ
ACMはAWSサービスで使うTLS証明書を無料で発行・自動更新するサービスだ。DNS検証(特にRoute53と組み合わせ)が推奨で自動更新に対応する。CloudFront用証明書はus-east-1リージョンで発行する制約がある。