AWSの開発環境構築手順：Route53とSSL/TLSサーバー証明書編

# Route53とは？

ChatGPTに質問しました。

> Q:Route53に関して5行程度で教えてください。

> A:
AWSのRoute 53は、高可用性でスケーラブルなDNS（Domain Name System）ウェブサービスです。
ドメイン名の登録、DNSレコードの管理、トラフィックルーティングの制御が可能で、ユーザーのリクエストを最適なエンドポイントに導きます。
加えて、地理的ルーティングやレイテンシーベースのルーティングがサポートされ、ユーザーに最適なパフォーマンスを提供します。
Route 53はまた、AWSサービスや外部のインフラにも対応し、ヘルスチェック機能で可用性を維持します。

DNSはドメインをIPアドレスに変換するサービスです。
Route53ではドメインの登録も行うことができます。
[DNS とは](https://aws.amazon.com/jp/route53/what-is-dns/)

# SSL/TLSサーバー証明書とは？

> Q:SSL/TLSサーバー証明書に関して5行程度で教えてください。

>A:
SSL/TLSサーバー証明書は、ウェブサイトとユーザー間の通信を暗号化し、安全性を確保するためのデジタル証明書です。
証明書には、サイトの所有者情報や公開鍵が含まれ、ブラウザとサーバー間で安全に情報をやりとりできるようにします。
SSL/TLS証明書により、URLが「https://」で始まり、ブラウザに鍵アイコンが表示され、サイトの信頼性をユーザーに示します。
証明書は認証局（CA）から発行され、有効期限が設定されているため、定期的な更新が必要です。
AWSでは、ACM（AWS Certificate Manager）を使用して証明書の取得や管理が可能です。

簡単に言うと、この認証を受けると`http`が`https`になり、通信が暗号化されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/527f8123-e37a-25de-c1bf-bcf818e6898a.png)

`http`のサイトにアクセスしようとすると、chromeだとこんな感じで警告がでます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/af59f1b6-cb9c-e111-ef93-ace84bf02646.png)

# 作業内容

## ドメインを登録

※執筆以前にドメインが既に用意されていた為、
本項目は具体的な作業ではなく、大まかな作業内容を記載します。

具体的な作業内容は下記を参考にすると良いと思います。
[新しいドメインの登録](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/domain-register.html)
[【初心者】Amazon Route53 でドメインを取得する](https://qiita.com/mksamba/items/e50a423b8ab12271eb73)
<br>

- Route53のダッシュボードを開くと、使用可能なドメインかチェックする項目が表示されているので、使用したいドメインをチェックする
※本記事では`project.com`とする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/a10e5ba0-80c1-0c48-c934-ab8f82ee87d7.png)
- 案内に沿って、下記を入力する
    - 登録するドメインの選択
    - 契約年数と自動更新の選択
    - 登録者の連絡先を入力
    - 利用規約を確認して送信
- 登録したメールアドレスに確認メールが届くので、リンクをクリックする
- Route53>ドメイン>リクエストと進み、申請したドメインのステータスが「成功」になっていることを確認する
- ホストゾーンが作成されていることを確認する

## ALBのレコードを作成

Route 53>ホストゾーン>project.comと進み、[レコードを作成]を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/0bb4e960-e5b6-f906-917a-cac4f8e3cf4b.png)
<br>

- レコード名：空欄（必要に応じてサブドメインを入力）
- レコードタイプ：A
- 値：作成したALBのDNS名
- [レコードを作成]を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/e210c02d-1b1e-0564-05a3-ee7257853790.png)
<br>

※DNS名は、EC2>ロードバランサーと進めば確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/f8fe64b6-5fd7-45d9-088b-257112b9fa34.png)

## SSL/TLSサーバー証明書をリクエスト

ACMの画面で[証明書をリクエスト]を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/9a6f7009-8fa1-2e4b-f765-18f1d70a0f34.png)
<br>

[次へ]を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/caeaf1d5-eb59-2ebf-c0e9-155962d4725d.png)
<br>

「完全修飾ドメイン名」に下記を追加
- project.com
- *.project.com

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/4b3c8a20-ac27-36f1-f0a1-b1cfe35e7001.png)
<br>

[リクエスト]を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/f33b25ba-adf1-4e1b-dd8f-572cceff1ed7.png)

「証明書を一覧」画面で、ステータスが「発行済み」になることを確認
※時間がかかるかも

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/cc99c385-1799-373e-d186-4376e4d2e314.png)
<br>

## ALBに証明書を適用する

EC2>ロードバランサー>project-dev-albと進み、「リスナーとルール」の「HTTPS:443」にチェックを入れて、「リスナーの編集を」選択する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/dc4a1acd-dafb-f32d-ed0a-716332280498.png)
<br>

「セキュアリスナーの設定」を設定する
- ポリシー名：ELBSecurityPolicy-TLS13...(推奨)
- 証明書の取得先：ACMから
- 証明書(ACMから)：project.com
※先ほど作成した証明書を選択

[変更内容の保存]を押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/c73da3bf-1a83-fe2c-5d60-751afad6cce6.png)
<br>

適用されている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/4bfad2b7-6855-5542-8c93-bde3fdc984f6.png)

# 参考記事

- [DNS とは](https://aws.amazon.com/jp/route53/what-is-dns/)
- [新しいドメインの登録](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/domain-register.html)
- [【初心者】Amazon Route53 でドメインを取得する](https://qiita.com/mksamba/items/e50a423b8ab12271eb73)
- [お名前ドットコムの独自ドメイン名でAWS ACMを使ってSSL証明書を取得する](https://www.beex-inc.com/blog/20231214_onamae_awsacm)
- [証明書をALBに紐づけてHTTPSで接続する](https://www.beex-inc.com/blog/20231215_alb_https)