httpで公開したWebサーバーをhttps通信できるようにする
前回の記事で、AWS の EC2 で Web サーバーを立てて、http 通信で公開する方法を紹介しました。
今回は前回の構成を使用して、https 通信で公開する方法を紹介します。
インフラの構成は以下のようになります。
ACM を使用して TLS 証明書を発行する
ACM とは、AWS が提供する TLS 証明書の管理サービスです。
TLS 証明書とは、サーバーとクライアントが通信を行う際に、通信の暗号化を行うための証明書です。
SSL 証明書ともいいます。
TLS 証明書の仕組みについてはこちらの記事を読んでみるとイメージしやすくて良いと思います。
作成する時の注意点なのですが、ドメイン名を入力する際にワイルドカードドメインを使用すると、サブドメインも含めて証明書が発行されます。
例えば*.example.com
と入力すると、example.com
とwww.example.com
の両方に対して証明書が発行されます。
ターゲットグループの作成
ターゲットグループとは、ロードバランサーがリクエストを転送する先の EC2 インスタンスを指定するためのグループです。
この後のロードバランサーを作成する際に必要なので今作っておきます
ロードバラーンサーを入れるためのパブリックサブネットを作成します
アプリケーションロードバランサーの作成
次にアプリケーションロードバランサーを作成します。
ec2 インスタンスの入っているパブリックサブネットをプライベートサブネットに変更する
ec2 のインスタンスへのアクセスはロードバランサーを介して行うようにします。
そのため、ec2 インスタンスが入っているパブリックサブネットをプライベートサブネットに変更します。
パブリックサブネットをプライベートサブネットに変更する方法は
-
サブネットの名前を変更する
サブネットのページからnozomi-dev-public-subnet1a
をnozomi-dev-private-subnet1a
に変更します。
-
パブリックサブネットのルートテーブルを変更する
ルートテーブルは必要なくなるので、nozomi-dev-private-subnet1a
のルートテーブルを削除します。
ロードバランサーを入れるためのパブリックサブネットを作成する
ロードバランサーを作成するときに 2 つのサブネットを選択する必要があるので、新しく 2 つのサブネットを作成します。
前の記事で作成したnozomi-dev-public-rtb
と作成したサブネットをひも付けます。
セキュリティグループを作成する
アプリケーションロードバランサー用のセキュリティグループを作成します。
今回はインターネットからのアクセスを受け入れたいので HTTP
とHTTPS
のアクセスを許可します。
アプリケーションロードバランサーを作成する
色々の準備が整ったので、本題のアプリケーションロードバランサーを作成します。
ネットワーキングマッピングと、セキュリティグループは前の工程で作成したものを選択します。
リスナーとルーティングはプロトコルを https にすると先程取得した TLS 証明を設定できるようになるので、
プロトコルを HTTPS にして、TLS 証明書を設定します。
ec2 のセキュリティグループのインバウンドの設定を修正する
先程の記事で作成した ec2 のセキュリティグループのインバウンドルールをアプリケーションロードバランサーのみ受け入れるように修正します。
Route53 のルーティング先を変更する
最後に Route53 のルーティング先を変更します。
トラフィックのルーティング先をアプリケーションロードバランサーに変更します。
レコードを編集から、エイリアスをオンにして、アプリケーションロードバランサーを選択します。
反映されるのに少し時間を待つ必要があります。
これで https 通信するための全ての作業が完了しました。
これで Route53 で作成したドメイン名にアクセスすると Apache のデフォルトページが表示されるはずです。
また、URL の先頭にhttps://
がついていることを確認してください。
Discussion