ちょっと話題の記事

【初心者向け】AWSのサービスを使ってWebサーバーをHTTPS化する

Route53、ACM、ALBを使用してWebサーバーをHTTPS化する手順をまとめました。
2020.02.27

大阪オフィスのYui(@MayForBlue)です。

自分の勉強も兼ねて、AWSのサービスを使ってWebサーバーをHTTPS化する一例の手順をまとめてみました。
AWSでの証明書の取得や、その証明書をロードバランサーに適用する方法など、AWSをあまり触ったことのない方にも参考にしていただけると思います。

目次

概要

やること

EC2インスタンスで構築済のWebサーバーを以下のAWSのサービスを使ってHTTPS化する。

  • AWS Certificate Manager:証明書の取得、管理(以下ACM)
  • Amazon Route 53:ドメインの取得、管理(DNS)( 以下Route53)
  • Elastic Load Balancing:ロードバランサー(このうち、今回はWebアプリケーション向きのApplication Load Balancer(以下ALB)を使用します。)

流れ

Route53で取得したドメインを使ってACMでドメイン証明書を取得し、その証明書をALBに適用する。
ALBとEC2を紐付けてインターネットからはALBに対してHTTPSで通信を行い、ALBからEC2にはHTTPでトラフィックを転送する。

構成図

前提

ドメインを取得していること
Route53でのドメインの取得についてはコチラ(Route 53 でドメインを取得・購入する(2019版)

手順

AWS Certificate Manager(以下ACM)で証明書を取得する

マネジメントコンソールでACMの画面に移動し、証明書のプロビジョニングの「今すぐ始める」をクリックします。

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

検証方法の選択でDNSまたはEメールを選択肢、「次へ」をクリックします。
(DNSの検証の場合はACM側で毎年自動更新してくれるのでこちらの方がおすすめです。Eメールの検証の場合は証明書更新のタイミングでメールでの承認作業が必要です。)

タグを追加します。必要ない場合は特につけなくても問題ありませんが、ここではNameタグをTestとしました。

次のページで内容を確認して問題なければ「確定とリクエスト」をクリックします。

DNS検証を選択した場合は、対象のDNSにCNAMEレコードを追加します。
作成した証明書のドメイン名をクリックして、CNAMEを確認します。

今回はRoute53のドメインなので、 「Routet53でのレコードの作成」をクリックします。

レコード作成のポップアップが表示されるので、そのまま「作成」をクリックします。

ロードバランサーを作成する

EC2のダッシュボードに移動して、左側のメニューから「ロードバランサー」を選択します。
「ロードバランサーの作成」ボタンをクリックします。

今回はWebアプリケーションに向いているApplication Load Balancer(以下ALB)を使用します。
Application Load Balancerの「作成」ボタンをクリックします。

名前に任意のロードバランサー名を入力、
スキームで「インターネット向け」を選択、
リスナーで「HTTPS」を選択、
アベイラビリティゾーンに任意のVPCとサブネットを選択して、「セキュリティ設定の構成」をクリックします。

証明書タイプで「ACMから証明書を選択する」を選択、
証明書の名前で今回作成した証明書を選択、
セキュリティポリシーで任意のセキュリティポリシーを選択(今回はデフォルトを使用)して、「セキュリティグループの設定」をクリックします。

セキュリティグループ名に任意の名前を入力して、ルールにタイプ:HTTPS、ソース:0.0.0.0/0(全開放)を追加して「ルーティングの設定」をクリックします。

ターゲットグループ名とヘルスチェックパスにそれぞれ任意の値を入力し、「ターゲットの登録」をクリックします。

ターゲットの登録のインスタンス一覧でターゲットに追加したいインスタンスを選択し、「登録済みに追加」をクリックします。

登録済みターゲットに対象のインスタンスが追加されていることを確認して「確認」をクリックします。

確認画面で内容を確認し、問題なければ「作成」をクリックします。

作成されるのを待ってこのような画面が表示されればロードバランサーの作成は完了です。

EC2インスタンスのセキュリティグループでロードバランサーからのアクセスを許可する

ロードバランサーからHTTPで転送されるトラフィックを許可するために、対象のインスタンスのセキュリティグループを編集します。
対象のインスタンスを選択し、詳細画面からセキュリティグループをクリックします。

対象のセキュリティグループの「編集」をクリックします。

タイプに「HTTP」を選択し、ソースで対象のロードバランサーのセキュリティグループを選択します。
(セキュリティグループ名を一部入力すると候補が出てきます。)
「保存」を押して編集完了です。

EC2のダッシュボードの「ターゲットグループ」をクリックし、「ターゲット」のタブからステータスが「healthy」となっていてヘルスチェックが成功していることを確認します。
(失敗している場合はセキュリティグループの設定やヘルスチェックパスが合っているか、Webサーバが起動しているかなどを確認します。)

ロードバランサーのDNS名をDNSに追加する

ロードバランサーに対して任意のドメインでアクセスできるようにDNSに値を追加します。
ここではRoute53を使用します。
まずは作成したロードバランサーの詳細画面からDNS名をコピーします。

Route53で対象のホストゾーンを選択し、「レコードの作成」をクリックします。
画面右側に入力エリアが表示されるので、名前に対象のドメイン名を入力します。
エイリアスの「はい」にチェックを入れると、選択可能なリソースが一覧されるので、対象のALBを選択して「作成」をクリックします。

設定したドメインでアクセスできれば作業完了です!

最後に

Route53、ACM、ALBを使ってWebサーバーをHTTPS化する方法をご紹介しました。
この記事がどなたかのお役に立てば幸いです。

以上、大阪オフィスのYui(@MayForBlue)でしたっ(`・ω・´)

参考リンク

今回使用したサービスについて勉強したい場合、AWS サービス別資料がおすすめです。