HTTPS 経由で CloudFront ディストリビューションから複数のドメインを提供する方法

2021.06.22

困っていた内容

CloudFrontディストリビューションを作成しました。オリジンにALBを関連付けており、ALB配下にはEC2インスタンスがあります。 その既存のCloudFrontディストリビューションに、複数のSSL証明書とドメイン名を設定する方法を教えてください。

どうすればいいの?

次の手順で設定を行います。

  1. ACMで全てのドメイン名に関連付けられているSSL証明書を作成する
  2. CloudFrontで[代替ドメイン名 (CNAME)]フィールドにすべてのドメイン名を入力する
  3. CloudFrontで手順1で作成したSSL証明書を追加する

SSL証明書を作成する

「証明書のリクエスト」から証明書のリクエストします。

「パブリック証明書のリクエスト」が選択されていることを確認し次へ進みます。

独自ドメイン名を入力し、「この証明書に別のドメイン名を追加」ボタンをクリックします。追加フィールドが表示されるので必要なドメイン名を追加します。全てのドメイン名を入力し次へ進みます。

「DNSの検証」または「Eメールの検証」を選択し次へ進みます。

AWSは「DNSの検証」を使用することを推奨していると公式ドキュメントに記載がありました。

ドキュメントより引用: ドメインの所有権を検証する

一般的に、次の理由により、電子メールの検証よりも DNS 検証を使用することをお勧めします。
Amazon Route 53 を使用してパブリック DNS レコードを管理する場合、ACM を使用してレコードを直接更新できます。
証明書は使用中で DNS レコードが残っている状態であれば、DNS 検証済みの証明書は ACM によって更新されます。電子メールを使用して検証された証明書は、825 日後に再検証する必要があります。

弊社記事もご参考ください。メール検証ACM→DNS検証ACMへの移行のススメ

必要に応じてタグを追加します。

内容を確認し、「確定とリクエスト」ボタンをクリックします。

ここで、それぞれのドメイン名左側の ▶︎ をクリックし詳細を開きます。1つ目のドメイン「Route53でのレコード作成」をクリックします。

下記ボップアップが表示されるので「作成」をクリックします。

「成功」と表示されれば完了です。

Route53のマネージドコンソールを確認したところCNAMEが追加されていました。

ACMコンソールに戻り、2つ目のドメイン名を確認すると「Route53でのレコード作成」ボタンはクリック出来なくなっていました。内容が同じなので1つ目のドメイン名のCNAMEをRoute53に登録することで完了となっています。

全てのドメインの検証状態が「成功」となっていれば完了です。

CloudFrontディストリビューションを設定する

既存のCloudFrontディストリビューションを修正します。

今のところ、カスタムSSL証明書は紐ついていない状態です。

Alternate Domain Names(CNAMEs)フィールドに全てのドメインを入力します。ドメイン名をカンマで区切るか、各ドメイン名を新しい行に追加してください。

次に、SSL CertificateでCustom SSL Certificateを選択し、下のフィールドで先ほど作成した SSL証明書を選択します。「Yes, Edit」をクリックして登録します。

Route53でカスタムドメイン名とCloudFrontドメイン名を紐つける

まず、「レコードを作成」をクリックします。

下記設定し「レコードを作成」をクリックします。

レコードタイプ: A
エイリアス: ON
トラフィックルーティング先: CloudFrontディストリビューションへのエイリアス
ディストリビューションを選択: 対象のCloudFrontドメイン名

他のドメイン名も同様に設定します。

確認

2つの独自ドメインからHTTPSアクセス可能となりました。

https://[ドメイン名].com/

https://test.[ドメイン名].com/

参照情報

HTTPS 経由で CloudFront ディストリビューションから複数のドメインを提供するには、どうすれば良いですか?