やりたいこと
やりたいことは、AWSベースで作成したウェブサイトのSSL証明書をまとめて管理したいため、ACM(AWS Certificate Manager)で取得したSSL証明書を利用すること。
ACMのSSL証明書をそのままでウェブサイトにインストールができないため、ALB(Application Load Balancer)も導入する。
構成イメージ
Route53はhttpsのリクエスト受け取って、ALBに送信する。
ALBに設定しているリスナーのルールに従って対象のインスタンスに送信する。
ACMのSSL証明書をALBに登録するので、基本はHTTPS:443のリクエスト受信する想定です。ただ、80番のリクエストにも対応しておきたいため、ALBのHTTP:80のリスナーにHTTPS:443にリダイレクトするようにしている。
やり方の参考:https://aws.amazon.com/jp/premiumsupport/knowledge-center/elb-redirect-http-to-https-using-alb/
事前準備
①対象ウェブサイトはRoute53で管理しているドメインで立ち上げたもの。
②SSL証明書をACMから取得しておく。
ALBの設定
SSL証明書の登録
HTTPS:443のリソナーに取得したSSL②をインポートする。
参考:https://aws.amazon.com/jp/premiumsupport/knowledge-center/associate-acm-certificate-alb-nlb/
ターゲットグループの作成
今回作成したのはTarget typeがInstanceになっているもの。
参考:https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-target-group.html
リスナーにルールの追加
HTTPS:443のルールを編集し、IF−THENのルールを追加する。
例えば、example.comのリクエストが来たら、exampleターゲットに転送。
IF ホストがexample.com
THEN
転送先
example: 1 (100%)
Route53の設定
ここの目的はALBとRoute53連携できるように設定する。
レコードの編集&追加
ALBの画面には当該DNS名の情報はあり、あとで確認するため、先にコピしておく。
Route53画面にある当該ホストゾーンの詳細から、Aレコードを編集&追加する。
(元々インスタンスIPに関連するAレコードがありまして、それをALBに変更すれば良いですが、テスト&確認しながら行いたいため、そのAレコードのルーティングポリシーを加重に変更してから、新規でALBのAレコード(ルーティングポリシーも加重にする)を追加する形にした。重みの調整でALBに行くか、本来の固定IPに行くかのコントロールできるのは自分の狙い。)
ALBのAレコードを作成する時に、「ターゲットのヘルスを評価」という項目があり、ONにする場合、予想している動きになる可能性があります。その時に以下の資料を参考になれると思います。ちなみに、今回はOFFにした。
ヘルスチェックが設定されている場合に Amazon Route 53 がレコードを選択する方法
複雑な Amazon Route 53 構成におけるヘルスチェックの動作
レコードのテスト
Route53の画面には「レコードをテストする」機能があるので、自分の設定が正しいかを確認したい時に使えると思います。
最後: 確認する
- CloudWatch、ALBのターゲットのモニタニングでリクエストの集計を確認できます。
- 普通にサイトにアクセスして、対象インスタンスのaccess.logにはALBのIPからのアクセスが出てきましたら、それでRoute53とALB設定はOKだと思います。
- ブラウザーでサイトにアクセスして、URL欄の鍵マーク🔒からSSL証明書はAWS発行のSSL証明書になれば証明書の切り替えができたと思います。