こんにちは!新卒研修を終え、新たにサービス開発部サービス開発2課にジョインした雑賀です。
今回、サーバーワークスの新卒研修として、模擬案件というサーバーワークスの仮の初期構築案件を一通り経験できるプロジェクトを完遂いたしました!
前提として、サーバーワークスでの初期構築とは、顧客要件の初回ヒアリングから開始し受注、顧客キックオフから検収までのことを指します。
今回は中でも、実際に顧客要件を加味した納品物を構築するにあたって得られた暗号化通信の知見をアウトプットとして残そうと思いました。
本記事では、AWSマネジメントコンソールを使用して、CloudFrontとALB(Application Load Balancer)間の通信をHTTPS化する方法について解説します。
構成の概要
まず、要件の前提をお話しします。
今回、オンプレミスで動いているホームページをAWSに移行する際にセキュリティを考慮した暗号化通信を行いたいといった要件があります。
では、この要件を満たすためにはAWS上ではどういった構成をとればいいのか、まずは構成図から見ていきましょう。

この構成では、CloudFrontをフロントエンドとして使用し、その背後でALBが動作します。ALBはEC2インスタンスやECSなどのバックエンドサービスへトラフィックを転送します。
今回お話しする内容は、一般ユーザーがCloudFrontを介して仮想ネットワーク内のロードバランサー(ALB)へHTTPS通信をする部分です。
また、ドメインを取得しており、Route53へのドメイン移管が完了している状態と仮定します。
では早速、具体的な構築方法について記載していきます。
AWS Certificate Manager (ACM)でのSSL証明書発行
CloudFrontとALBで使用するSSL証明書を2つ、ACMで発行します。
※CloudFront用にはバージニア北部、ALB用には東京リージョンで証明書を発行する必要がありますので、作業を行う際は以下コンソール画面から切り替えてから実施をお願いします。
まず、AWSマネジメントコンソールで Certificate Manager に移動します。
次に証明書をリクエスト を選択し、移管したドメイン名を入力します。
その他、設定に関してはデフォルト設定のままリクエストします。
こちらでSSL証明書については発行完了です!
ALBの設定
まず、AWSマネジメントコンソールで EC2 に移動します。
左側、ナビゲーションペインから ロードバランサー を選択します。
ロードバランサーの作成から Application Load Balancer(ALB) を選択し、作成します。
ロードバランサー名を設定し、VPC、セキュリティグループを選択し、負荷分散を行うアベイラビリティゾーンを選択します。
次に、リスナーとルーティングについて設定します。
プロトコルは HTTPS(443番ポート)を選択し、ターゲットグループを選択し、EC2やECSを登録します。
セキュアリスナーの設定から、証明書の取得先を ACMから に設定し、先ほど東京リージョンで作成したSSL証明書を選択します。
他はデフォルトの設定で、ロードバランサーの作成をクリックします。
これでALBについても作成できました!
CloudFrontの設定
まず、AWSマネジメントコンソールで CloudFront に移動します。
CloudFrontのディストリビューションを作成のボタンをクリックします。
続いて、オリジンドメインに先ほど作成したALBのDNS名を設定します。また、プロトコルをHTTPSのみに設定します。
オリジンに関しては他はデフォルト設定のまま次に進みます。
次に、ビヘイビアの設定で、ビューワープロトコルポリシー を HTTPS only に設定し、今回は許可されたHTTPメソッドをGET, HEADに設定します。
ビヘイビアの設定に関しては他はデフォルト設定のまま次に進みます。
最後に、設定のフェーズに移ります。
料金クラスに関しては要件によって選択いただくようにお願いします(今回はすべてのエッジロケーションを選択します)。
また、Custom SSL certificateには先ほどバージニア北部で作成したSSL証明書を選択します。
代替ドメイン名には用意されているドメインを入力します。また、IPv6の項目はIPv6アドレスを持つクライアントからの通信を受け付けます(今回はオフで進めます)。
補足として、HTTP/2 は、従来のHTTP/1.1に比べて高速な通信が可能なプロトコルで、CloudFrontではデフォルトで有効になっています。また、HTTP/3 は、UDPベースのQUIC(クイック)プロトコルを使用し、より高速で安定した通信を実現します。
他の項目はデフォルト値でディストリビューションを作成をクリックします。
これでCloudFrontについても作成できました!
Route53ホストゾーンにCloudFrontのCNAMEレコードを登録
まず、AWSマネジメントコンソールで Route53 に移動します。
左側、ナビゲーションペインから ホストゾーン を選択します。
利用するホストゾーンを選択して、レコードを作成をクリックします。
レコード名はサブドメインが必要な場合には入力ください。
レコードタイプ項目はCNAMEを選択し、値の欄で作成したCloudFrontのディストリビューションドメイン名を入力します(この情報は、CloudFrontディストリビューション設定画面で確認できます)。ルーティングポリシーは要件に沿ってご選択ください。
設定が完了したら、レコードを作成をクリックします。
こちらで、CloudFrontからALBへのHTTPS通信化が完了しました!お疲れさまでした!
まとめ
この手順を通じて、CloudFrontとALB間の通信をHTTPS化を実施しました。
ACMを利用することで無料のSSL証明書が発行でき、セキュアなウェブアプリケーションを構築できます。また、ACMは手動更新不要で自動更新されるため、運用負荷を大幅に削減 できます。
実際に構築してみて、AWSの各サービスがどのように連携するかを学ぶことができました。特にCloudFrontのキャッシュ設定 や HTTP/3の有効化 などの細かい調整が、パフォーマンス向上につながる点が興味深かったです。
ぜひ試してみていただけたら幸いです。
雑賀 風暉(執筆記事の一覧)
サービス開発部 サービス開発2課
辛めの担担麺が好きです。