こんにちは。eyeon運用チームです。
2024年10月以降にEメール検証で作成された証明書のWHOIS検索が廃止されることが発表されてからしばらく経ちました。
現在(2024年10月)、新規でEメール検証で証明書を作成してもWHOISに登録されている連絡先アドレスには、ドメイン検証メールは送信されず、リクエストされたドメインのシステムアドレス(「admin@”ドメイン名”」や「webmaster@”ドメイン名”」など)に送信され続けてしまいます…。
ということで、今更ですが、AWS Certificate Manager(ACM)にてDNS検証の証明書を作成してALBに反映する手順をご案内します。
1. 構成図
今回の環境で使用しているサービスは、Route53 、ACM、ロードバランサー(ALB)、EC2(WEBサーバ)です。
Route53はDNSサーバとして、ACMは証明書の作成・管理として、それぞれ利用しています。
WEBアクセスまでの流れは以下です。
① ユーザのブラウザは、URLの名前解決のため、Route53に問い合わせする(DNSクエリ) ② ユーザのブラウザは、Route53から回答されたIPアドレス(ALB)に、HTTPSリクエストを送信する ③ ALBは、HTTPSのリクエストをオフロードする(SSL/TLS暗号化を復号する) ④ ALBは、EC2にHTTPリクエストを送信する ⑤ ALBは、ユーザにHTTPレスポンスを送信する
こちらにRoute53の名前解決からALBの流れを説明しているので、ぜひご参照ください!
2. フロー図
今回の設定の流れです。
①ACMでDNS検証の証明書を作成します
②自動でRoute53にCNAMEレコードが追加されます
③ALBに作成した証明書を反映します
無事に反映できたら、隣の人とハイタッチしましょう。
隣に誰もいなければ、そのまま静かに作業完了しましょう。
3.(手順):ACMでDNS検証の証明書を作成
正確な手順、最新の情報は、AWSさんのドキュメント「パブリック証明書をリクエストする」をご参照くださいませ。
(1)ACMコンソールを開くため、以下のURLをクリックします
https://ap-northeast-1.console.aws.amazon.com/acm/home?region=ap-northeast-1#/welcome
(2)ACMコンソールから「証明書をリクエスト」をクリックします
(3)「証明書をリクエスト」画面の証明書タイプにて、「パブリック証明書をリクエスト」にチェックします
チェック後、「次へ」をクリックします
(4)[ドメイン名] セクションで、完全修飾ドメイン名のテキストボックスにFQDNを入力します
(今回はFQDNとして「www.k-friendly.com」と「k-friendly.com」を入力します)
(5)[検証方法] セクションでは「DNS検証」をチェックします
(6)[キーアルゴリズム] セクションではACM証明書のデフォルトのキーアルゴリズムである「RSA 2048」をチェックします
(要件に従い、暗号化アルゴリズムを選択ください。通常は「RSA 2048」で問題ないと思います)
(7)証明書にタグを付けることができますが、今回はタグ付けせずスキップします
(8)[リクエスト] をクリックします
(9)作成した証明書の情報が[証明書一覧]に追加されていることを確認できたらACM証明書の作成は完了です
4. (手順):証明書をDNSレコードに反映
次に、作成した証明書をDNSレコードに反映させます。
正確な手順、最新の情報は、AWSさんのドキュメント「DNS検証のセットアップ」をご参照くださいませ。
(1)ACMコンソールの[証明書一覧]から、作成した証明書をクリックします
(2)[ドメイン]で次の2つの手順のうち、a か b のいずれかの手順を実施してください
a.DNSプロバイダーとしてRoute53を使用している場合
a-1.[Route 53でレコードを作成] をクリックします
a-2.ドメインが検証されていない場合、以下を選択後に「レコードを作成] をクリックします
└ [Amazon Route53でDNS レコードを作成]セクションで追加するドメインをチェックします
今回は自動で追加されました
b. DNSプロバイダーとしてRoute53を使用していない場合
b-1. 作成した証明書の[ドメイン]セクションに表示される[CNAME名]、[CNAME値]をコピーします
b-2.コピーした[CNAME名]、[CNAME値]を利用しているDNSサーバに追加します
└ 今回はDNSプロバイダーとして「IIJ DNSプラットフォームサービス」を使用しているので、そちらに追加していきます
設定内容の説明)
Name:[CNAME名]を入力してください
TTL :[300]と入力してください
Type :[CNAME]を選択してください
Value : [CNAME値]を入力してください
(3)[ドメイン]セクションに表示されてるドメインのステータスが[成功]になっていることが確認できたら、DNSレコード反映は完了です
5.(手順):ALBに作成した証明書を反映
作成した証明書をロードバランサ(ALB)に適用させていきます。
正確な手順、最新の情報は、AWSさんのドキュメント「Application Load Balancer のHTTPSリスナーを更新する」をご参照くださいませ。
5-1. 事前確認(ブラウザ)
(1)webブラウザから現在の証明書を確認します
【chromeの場合】
①アドレスバーの左側にある「調整アイコン」をクリックします
②表示されたタブから「この接続は保護されています」をクリックします
③「証明書は有効です」をクリックします
④証明書ビュワーが表示されます
ここに表示されている内容が、適用されている証明書の内容です
例)「発行日」 :2023年10月19日木曜日 9:00:00
「有効期限」:2024年11月17日日曜日 8:59:59
⑤「詳細(D)」をクリックします
⑥「証明書のフィールド」から「シリアル番号」をクリックします
「フィールド値」に表示された値が現在適用されているACM証明書のシリアル番号です
5-2.ALBに証明書を反映
(1)EC2コンソールを開くため、以下のURLをクリックします
https://console.aws.amazon.com/ec2
(2)左ペインから[ロードバランサー]をクリックします
(3)証明書を更新するロードバランサーをクリックします
(4)[リスナーとルール] タブから、[Protocol:Port] 列にある「HTTPS:443」クリックします
(5)リスナーの詳細ページから[証明書] タブをクリックします
(6)今回は既にある証明書を新しいものに切り替えるので、[デフォルトを変更] を選択します
新しく証明書を追加する場合は、[SNIのリスナー証明書]にある[証明書を追加]をクリックした後に作成した証明書を追加します
(7)作成した証明書を選択します
例)「証明書ID」:96e47a36-b18c-4ed8-850b-c5815b09bd8b
(8)[デフォルトとして保存] をクリックします
5-3.事後確認(ブラウザ)
(1)再度webサイトを開き、証明書の[発行日]、[有効期限]の日付が作成した証明書の日付と一致していることを確認します
例)更新前
「発行日」 :2023年10月19日木曜日 9:00:00
「有効期限」:2024年11月17日日曜日 8:59:59
更新後
「発行日」 :2024年9月12日木曜日 9:00:00
「有効期限」:2025年10月13日日曜日 8:59:59
(2)以下の2つの番号の一致を確認できたら、ALBへの適用は完了です
・「証明書のフィールド」内にある「シリアル番号」の値
・今回作成した証明書の「シリアル番号」の値(ACMコンソールにて確認)
おまけ(証明書をCloudFrontに適用)
今度は作成した証明書をALBではなくCloudFrontに適用していきます。
正確な手順、最新の情報は、AWSさんのドキュメント「CloudFront ディストリビューションを更新する」をご参照くださいませ。
(1)webサイトから現在の証明書を確認します
例)更新前
「発行日」 :2024年7月2日火曜日 9:00:00
「有効期限」:2025年8月1日金曜日 8:59:59
(2)AWS CLoudFrontコンソールを開くため、以下のURLをクリックします
https://us-east-1.console.aws.amazon.com/cloudfront/v4/home?region=ap-northeast-1#/welcome
(3)左ペインから「ディストリビューション」をクリックします
(4)証明書を更新するディストリビューションをクリックします
(5)[一般]から[編集]をクリックします
(6)[Custom SSL certificate]から今回新規に作成したACM証明書を選択します
例)f27c2967-95a9-4582-a6b3-18b2af2c1c36
(7)その他の内容は変更せず、[変更を保存]をクリックします
(8)webサイトから証明書の[発行日]、[有効期限]の日付が作成した証明書の日付と一致していることが確認できたら、CloudFrontへの証明書適用は完了です
例)「発行日」 :2024年9月10日火曜日 9:00:00
「有効期限」:2025年10月10日金曜日 8:59:59
X.勉強したページ
本ブログを書く際に参照したAWSさんの公式ドキュメントは以下の通りです。
- パブリック証明書をリクエストする(DNS検証の証明書作成する手順です)
- DNS 検証のセットアップ(DNS検証の証明書をレコードに反映する手順です)
- Application Load Balancer のHTTPSリスナーを更新する(ALBに証明書を適用する手順です)
- CloudFront ディストリビューションを更新する(CloudFrontに証明書を適用する手順です)
Y.eyeonの宣伝
無事に隣の人とハイタッチできましたでしょうか?長々と書きましたが、こんな作業は面倒ですよね。
メンドイよ!って場合はぜひ、AWSインフラの構築、監視、運用のすべて、またはどれかをeyeonにお任せいただけると嬉しいです!