🍒

ECS(Fargate)で起動したNginxコンテナに独自ドメイン&HTTPSでアクセスできるようにする

2023/10/19に公開

概要

https://zenn.dev/shimiyu/articles/3b6cacf157112f

以前、ECSでNginxコンテナを起動し「Hello Wolrd」を表示してみるという記事を書きました。

その時は、ALBを前段の置き、ALBのドメインに対してアクセスを行いました。

今回、このコンテナに独自ドメイン&HTTPSでアクセスするように変更を加えていきます。

構成図

独自ドメイン

お名前.comでドメインを取得する

お名前.comでsy-test-domain.comというテスト用ドメインを取得します。

Route 53でホストゾーンを作成する

AWSコンソールからRoute53のページに行きます。

「ホストゾーンを作成」を選択します。

以下のように、ドメイン名とタイプを選択します。

Route 53が提供するネームサーバをお名前.comに登録する

この作業の目的

多くの場合、ドメインを購入するとドメイン登録業者のDNSサーバがネームサーバとして設定されています。つまり、デフォルトではドメインの名前解決はその業者のDNSサーバによって行われるということです。Route 53をDNSサービスとして利用する場合、このネームサーバをドメイン登録業者のものからRoute 53のものに変更する必要があります。

この手順を実施することで、Route 53の提供するネームサーバが名前解決を行うようになります。

登録方法

作成したホストゾーンの詳細ページで、ネームサーバ(NS)が確認できます。

ここに記載されたネームサーバは、Route 53が提供するDNSサーバであり、今回取得した独自ドメインの名前解決を担当するサーバです。

これらのネームサーバをドメインを取得したお名前.comに登録します。

お名前.comのページに行き、トップページ > ネームサーバの設定 > 他のネームサーバを利用の流れで選択します。すると、ネームサーバ情報を入力するフォームが出てきます。ここに、Route 53で確認した4つのネームサーバを入力します。

独自ドメインとALBを紐づける

ホストゾーンにターゲットをALBとするAレコードを追加します。

レコードを作成
レコード名 空白
レコードタイプ A-IPv4
トラフィックのルーテーティング先 Application Load Balancer
リージョン アジアパシフィック(東京)
ロードバランサーを選択 事前に作成済みのALBを選択

上記の要領でAレコードを追加します。

Aレコードは本来ドメイン名に対応するIPv4アドレスを持ちますが、Route 53の場合はALBやCloudFrontなどのAWSリソースを直接指定できます。

今回は、ALBと取得した独自ドメインを紐付けたいので、ALBを選択しています。

Aレコードとは

ドメイン名をIPアドレスにマッピングするためのDNSレコードのことです。ドメイン名に対応するIPv4アドレスを指定します。Route 53を使用する場合は、IPv4アドレスを直接指定するのではなく、ALBやCloudFrontなど特定のAWSリソースを直接指定することができます(エイリアスAレコード)。

エイリアスAレコードを使用すると、ALBやCloudFrontの動的なIPアドレスの変更にも自動で対応してくれます。

アクセスできるかを確認する

http://sy-test-domain.comにアクセスすると、「Hello World!!」が表示されることが確認できました。

HTTPSアクセスできるように設定する

続いて、sy-test-domain.comにhttpsでアクセスできるようにします。

ACMでSSL/TLS証明書を取得する

SSL/TLS証明書のおさらい

以下の2つを役割を担う認証局から発行される電子証明書

  • ウェブサイトの運営者の実在性を確認すること
  • ブラウザとWebサーバ間で通信データの暗号化を行うこと

証明書の取得方法

AWSコンソールから「AWS Private Certificate Authority」のページに行き、「AWS Certificate Manager」を選択します。その後、「証明書をリクエスト」を押します。

証明書タイプ パブリック証明書をリクエスト
ドメイン名 sy-test-domain.com
検証方法 DNS検証
キーアルゴリズム RSA 2048

上記の要領で入力し、リクエストを押すと証明書リソースが作成されます。

DNS検証前のため、ステータスが保留中になっています。

CNAMEレコードをドメインのDNS設定に追加する

検証方法にDNS検証を選択した場合、ドメインのDNS設定にCNAMEレコードを追加する必要があります。CNAMEの内容は証明書の詳細ページで確認できます。

Route53のホストゾーンのレコードからCNAMEレコードを追加します。Route 53 > ホストゾーン > sy-test-domain.comを開き、「レコードを作成」を押します。

レコード名 証明書のCNAME名(sy-test-domain.com部分を除く)
証明書のCNAME値

レコードを作成を押すと、CNAMEレコードが追加されました。

しばらくすると、証明書のステータスが「保留中の検証」から「成功」に変わります。10分程度掛かりました。

ALBの設定を行う

ALB側も2点修正する点があります。

  • HTTPSリスナーを追加する
  • セキュリティグループを更新する

HTTPSリスナーを追加する

ALBの詳細ページのリスナーセクションの「リスナーの追加」を押します。

リスナーの詳細
プロトコル HTTPS
ポート 443
セキュアリスナーの設定
Certificate source ACMから
Certificate (from ACM) 先ほど作成した証明書を選択

追加を押すと、リスナーとルールにHTTPS:443が追加されました。

到達不可能と表示されてますが、これはALBと関連付けしてあるセキュリティグループが HTTPS:443 のトラフィックを許可していないためです。

セキュリティグループを更新する

ALBと関連付けしているセキュリティグループを編集して、HTTPS:443 のトラフィック受信を許可します。

該当のセキュリティグループ > インバウンドルールから「インバウンドルールを編集」を押します。

以下のルールを追加します。

タイプ HTTPS
ソース 0.0.0.0/0

「ルールを保存」を押すと、インバウンドルールにHTTPSが追加されます。

HTTPSでアクセスできることを確認する

これまでの設定でsy-test-domain.comにHTTPSでアクセスできるようになりました。

https//sy-test-domain.comにアクセスして確認します。

期待通り「Hello World!!」が表示され、証明書も確認できました。

Discussion