ACM で発行した証明書をCloudFrontで使、えなかった
S3上の静的コンテンツをHTTPSで公開したく、CloudFrontに証明書を設定しようとしたら意外と手こずったので残します。
前提条件
- コンテンツ:S3でパブリックに設定したバケット上に配置。HTTPではアクセスできる状態。
- ドメイン名:取得済み。
- DNSサービス:AWS Route 53 を使用。取得済みドメインを登録し、FQDNで先程のコンテンツにアクセエスできる状態。
- 証明書:ACM - AWS Certificate Manager (in 東京) で発行。※先に書いてしまうと、東京で発行してたのがNG元。
困った状況
ここまで準備できれば、CloudFrontでディストリビューションを作成し、発行した証明書を設定すればコンテンツにHTTPSでアクセスできるようになる、と考えていました。が、CloudFrontのコンソールから、Create Distribution > Distribution Settings で、「Custom SSL Certificate (example.com):」がグレーアウトして選択できません。
Choose this option if you want your users to access your content by using an alternate domain name, such as https://www.example.com/logo.jpg. You can use a certificate stored in AWS Certificate Manager (ACM) in the US East (N. Virginia) Region, or you can use a certificate stored in IAM.
大事な部分は後半の2行、この部分ですね。
- You can use a certificate stored in AWS Certificate Manager (ACM) in the US East (N. Virginia) Region,
- or you can use a certificate stored in IAM.
最初から1行目の方をちゃんと読めば良かったのですが、「in the US East」の部分を読み飛ばしていました。このすぐ下にあるボタンを押しても証明書リクエストの画面が呼ばれるだけ。すでに発行済みなのでやってもムダです。
それではと2行目の方を追って見たものの、行き詰まりました。
解決
単純な話ですが、- You can use a certificate stored in AWS Certificate Manager (ACM) in the US East (N. Virginia) Region,
ここに in the US East (N. Virginia) Region と記載されている通り、証明書の発行を東京リージョンではなく、北バージニアのACMで行うべきでした。
< ダメ
< 正解
北バージニアのAMCで同様の証明書を発行したところ、無事に「Custom SSL Certificate (example.com):」を選択することができるようになりました。