こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
今回はALBに独自ドメインでアクセスして、EC2にインストールしたApacheにアクセスできるようにしていきたいと思います。
環境イメージ
今回構築する環境は以下となります。
ACMを使って東京リージョンで証明書を使えるようにします。
ALBデプロイ時に443でリッスンするように設定し、またRoute53のPublic Hosted ZoneにAレコードを作成します。設定した独自ドメインでALBにセキュアに通信できる環境を作っていきます。
※本来であればALB⇔EC2間もSSL化したほうが良いらしいです。
これに関してはおいおい確認していきます。
構築
ACMで証明書払い出し
今回、EC2とALBは東京リージョンにデプロイしますので、リージョンを東京にした上でACMの管理画面を開きます
CloudFrontでACMを使う時との違い
CloudFrontで証明書を払い出すときは米国東部(バージニア北部)で払い出さなければならないのですが、それを東京リージョンにデプロイしたALBに使用することはできません。 東京用として別途払い出しをしなければなりません。参考:https://qiita.com/ohtsuka-shota/items/7ebc8c0977b2cbdb9833
パブリック証明書をリクエストを選択した状態で次に進みます。
以下の設定でリクエストを実行します。
払い出しが出来たことを確認します。
私の環境では事前にCloudFrontで別途証明書を払い出し、Route53にレコードを作成している為、自動でステータスが成功となりますが、もし初めて払い出した場合はRoute53でレコードを作成ボタンを押下して、Route53にレコードを作成してください。
EC2のデプロイとapache環境の作成
今回は別のSubnetに2台EC2をデプロイしていきます。
apacheをインストール出来ればここはなんでもよいかと思います。
但し、セキュリティグループは今回80が空いているものを指定することだけは。
正常にデプロイできたことを確認します。
それぞれのEC2にSSHして以下のコマンドを実行。とりあえずapacheをインストールして起動しておきます。
[ec2-user@ip-192-168-1-200 ~]$ sudo su -
[root@ip-192-168-1-200 ~]# dnf update && dnf upgrade -y
[root@ip-192-168-1-200 ~]# dnf install -y httpd
[root@ip-192-168-1-200 ~]# systemctl start httpd
[root@ip-192-168-1-200 ~]# systemctl enable httpd
ALBをデプロイする
ターゲットグループを作成する
以下の設定でターゲットグループを作成します。
今回、EC2に対してはたとえALBからであってもHTTPを使うためそのように設定しています。
作成出来たことを確認します。
ALBを作成する
ロードバランサを作成します。
タイプを選択するように求められますので、Application Load Balancerの作成ボタンを押下します。
スキームに関しては、このALBを使ってローカルのPCからAWS内のEC2にアクセスするので、インターネット向けを選択します。
ネットワークマッピングに関してはEC2がデプロイされているVPCやSubnetを選択します。
セキュリティグループに関しては443が空いているものを選択します。
リスナーとルーティングについてはHTTPSを選択。セキュリティポリシは推奨のものを選択。SSLサーバ証明書でACMを選び、登録した独自ドメインのものを選択します。
この設定でデプロイしていきます。
デプロイできたことを確認します。リスナーとルールでHTTPS:443を押してみます。
証明書が紐づいていることが確認できます。
試しにALBに紐づているDNS名を使ってHTTPS接続をしてみます。今回の場合https://alb-test-https-234963113.ap-northeast-1.elb.amazonaws.com/みたいな感じでアクセスをしてみると、アクセスは出来るものの、保護されない通信として警告が表示されます。
この警告は証明書のドメインと、アクセスに使用しているドメインが異なるためですね。
Route53にAレコードを作成して独自ドメインでALBにHTTPS接続する
Route53の管理画面に移動し、独自ドメインを管理しているPublic Hosted Zoneを開きます。レコードを作成を押下します。
今回ALBに紐づけるドメインはs3.ohtsuka-aws.xyzとしました。
レコードタイプはAレコード。エイリアスを有効にします。
ALBを選択し、ALBをデプロイしているリージョンを選択。ALBの名前を選択して、レコードを作成します。
作成出来たことを確認します。
登録したドメインでHTTPS接続が出来るかを確認します。
接続でき、かつ先ほどのような警告が出ていないことが確認できます。以上!