【AWS】ALB->ドメイン->SSL証明書 メモ


# 概要

AWSでインフラ構築する一部分のメモ
実際にどういう構成で構築するのか次第で柔軟に参考にして頂ければ幸いです。


## 最終的にできる構成

今回出来上がる構成は以下の通りです

Request(https) -> Route53 -> ALB -> EC2


## 構築の流れ

**※前提：「EC2インスタンス有」「ドメイン取得済み(今回はfreenom)」「セキュリティグループ有」**



1. Route53設定 (ネームサーバ)
2. ACMで証明書取得
3. ALB (httpsリスナー)
4. Route53でドメイン割り当て

1 で「リクエスト -> Route53」の流れを用意
2,3 で「ALB -> EC2」の流れを用意
4 で 「Route53 -> ALB」の流れを用意

のようなイメージです。


## Route53 ドメインの設定


AWSマネジメントコンソールでRoute53に進む
![スクリーンショット (220)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/459ff561-00d6-e0c4-1a5f-e7f377b4018e.jpeg)

「ホストゾーンを作成」を押下

![スクリーンショット (221)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/275f08db-ea86-541b-d269-8caafecadae1.jpeg)

もう一度「ホストゾーンを作成」を押下

![スクリーンショット (222)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/46b3516a-4cb1-e1b3-2229-c78460811e3e.jpeg)

すると右側にホストゾーン設定の画面が出てくるので予め取得してあるドメインを「ドメイン名」の部分に入力し下の「作成」を押下

![スクリーンショット (223)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/e55d4580-0815-818e-83ca-b770c33cfd74.jpeg)

するとホストゾーンが作成されたので、以下のようにできているのかを確認。

![スクリーンショット (226)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/c32084dd-e810-8526-e483-1256cc942ec4.jpeg)

次にドメインにネームサーバの設定をします

※今回は「freenom」を使っています

自分のドメインの一覧画面で各ドメインの右側にある「Manage Domain」を押下


![スクリーンショット (228)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/1d6ff491-1481-4142-4dad-3318784b2993.jpeg)

するとこのような画面に入るので、

![スクリーンショット (229)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/9217efc9-6a3d-dac1-31c6-55abf5adfcf5.jpeg)

「Management Tools」の「Nameservers」を選択

![スクリーンショット (230)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/8fbcf9f9-0999-9b2c-8c0b-9cd5753c86d6.jpeg)

「Use custom nameservers」にチェックを入れるとフォームが出てくるので
既に用意したRoute53 のホストゾーンの「タイプ:NS」の値4つをそれぞれ入れていきます

入力後「Change Nameservers」を押すと完了です

![スクリーンショット (231)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/23be749f-bffd-64e9-6d27-3f72da4886eb.jpeg)



## ACMでSSL証明書取得

AWSの`Certificate Manager`を選択し、「証明書のリクエスト」を押下する

![スクリーンショット (210)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/e42c317b-33f6-b635-ad27-73c15a390a9e.jpeg)

右下の「証明書をリクエスト」を押す

![スクリーンショット (212)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/ffb5eff5-d954-c19b-eee6-40c17a424556.jpeg)

そのまま右下の「確認」を押下

![スクリーンショット (213)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/1951a0b8-ac1d-a857-6db8-a4302079b132.jpeg)

右下の「確認とリクエスト」を押下

![スクリーンショット (214)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/1a3b9ca6-bc39-0ac0-5cb3-fd2efcfdc8f4.jpeg)

ドメインの「▶」押すと出てくる、「Route53でのレコードの作成」の青いボタンを押し、

その後「続行」を押下


![スクリーンショット (215)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/193e0edb-53f6-fd75-435a-25c062bedbb0.jpeg)

直後は画像のように検証保留中となっていますが、この部分が「発行済み」に変わると完了です

![スクリーンショット (217)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/51341f7f-04a6-dbb6-1cc1-e62b6d4bcafb.jpeg)


## ALB設定 (httpsリスナー)

EC2のサイドバーから「ロードバランサー」を選択して「ロードバランサ―の作成」を押下

![スクリーンショット (197)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/665f70c2-9933-f434-ddb7-2944f8ef3e0a.jpeg)

「Application Load Balancer」の「作成」を押下

![スクリーンショット (198)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/689d0fa9-55fc-6b6d-2e9d-bcbe7d259a52.jpeg)

プロトコルで「HTTPS」を選択

![スクリーンショット (199)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/5cd732d7-2239-c22b-06b6-44f9d7df8865.jpeg)

「アベイラビリティゾーン」はEC2インスタンスがあるところを含めて2つ選び、
右下の「次の手順：セキュリティ設定の構成」を押下

![スクリーンショット (200)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/735912fd-9cae-2b7f-9c84-6ee94953c3dd.jpeg)

上で作った証明書を選択して、右下の「次の手順：セキュリティグループの設定」を押下

![スクリーンショット (201)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/4cb2d0af-eb30-42a0-fbad-4ef58c4a0432.jpeg)

「新しいセキュリティグループを作成する」を選択し、
`HTTP(80), HTTPS(443)`のルールを準備後
右下の「次の手順：ルーティングの設定」を押下

![スクリーンショット (263)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/7c640b95-37fe-14d5-5b30-4e084716e283.jpeg)



「新しいターゲットグループ」を選択し、任意の「名前」を付けた後
右下の「次の手順：ターゲットの登録」を選択


![スクリーンショット (203)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/a03531b6-8ad3-0b9e-4733-12abeb2a00c6.jpeg)

ここではターゲットグループに新しくEC2インスタンスを追加します。
下にはまだ未追加のインスタンスが一覧表示されているので、今回ALBで振り分ける先の
インスタンスを選択し、

![スクリーンショット (205)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/227ef963-715e-d570-7e85-15e3d5515e62.jpeg)

「登録済みに追加」を押す。


![スクリーンショット (207)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/c6166706-1e9c-25f5-1436-a58747e628d0.jpeg)

すると、画面上部の登録済ターゲットの一覧に追加されるので、
そのことを確認後、画面右下の「次の手順：確認」を押下。

![スクリーンショット (208)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/3769ff7f-9ef9-6a15-32d0-c474e2945a9a.jpeg)

今までの設定を確認後、右下の「作成」を押下。

![スクリーンショット (209)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/1a56f987-a173-eb7b-5b2e-9f98fc035959.jpeg)

##EC2セキュリティグループにつなげる

マネジメントコンソールの「セキュリティグループ」を選択、
今作ったALBのセキュリティグループのIDをコピーする

![スクリーンショット (264)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/745dc770-2803-dc17-db78-41ec90c0bb66.jpeg)

EC2インスタンスが所属しているグループを選択して
「インバウンド」の「編集」を押す

![スクリーンショット (265)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/c18061df-9c8b-bc29-a9c2-a6c635c1c332.jpeg)

`HTTP`のソース部分に今コピーしたALBセキュリティグループのIDを入力して保存する

![スクリーンショット (267)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/8c88eb2f-81e8-9531-f7d2-ee36936b5964.jpeg)



## ALBリスナーに HTTP->HTTPS 転送設定

ALBにhttpリクエストが来た時に、httpsにリダイレクトするようにしておきます
先ほど作ったALBのリスナータブを選択し、「リスナーの追加」を押下します

![スクリーンショット (260)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/b899bd67-c7d9-3525-b0d5-0c599cb95ab4.jpeg)

「プロトコル：ポート」を`HTTP:80`を指定してアクションを追加します。
「リダイレクト先...」を選択して`HTTPS:443'にリダイレクトするように設定します

入力後右上の保存を押して完了です


![スクリーンショット (261)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/c0e38d57-a2f4-5234-8b4f-544f48685dc8.jpeg)



**※「セキュリティグループ」のインバウンドのタイプで
`https`を追加していない場合はこのタイミングでしておきましょう**

## Route53でドメイン割り当て

![スクリーンショット (218)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/ddfba29e-08c2-ef6c-728b-1c12aeed7324.jpeg)


「Route53」の設定画面に移動し、上記で作成した「ホストゾーン」を選択、「レコードセットの作成」--> 右の「エイリアス先」で作ったALBが一覧に表示されているのでそれを選択後「作成」を選択。

※サブドメインを指定したい場合は「名前」の欄にサブドメインを指定すれば可能です。



これで、今設定したドメインにhttpsアクセスできるようになりました。


![スクリーンショット (219)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/30e2887e-86da-3e8e-7859-e614bb680a4c.jpeg)




#参考記事

- [AWS：無料でSSL証明書を取得する方法](https://qiita.com/iwaseasahi/items/1687426add4124899fe3)
- [無料ドメイン(.tk)とRoute53を利用して0円でHTTPS環境を設定してみた] (https://dev.classmethod.jp/cloud/aws/mesoko-r53-cdn/)
- [AWSのサービスでドメインを取得しALBでSSLで接続出来るようにする] (https://qiita.com/keitakn/items/4b2db95eae81044a779c)
- [ALBとバックエンドEC2間をHTTPS通信させてみた] (https://dev.classmethod.jp/cloud/aws/alb-backend-https/)
- [AWSでWebサイトをHTTPS化 その1：ELB(+ACM発行証明書)→EC2編] (https://recipe.kc-cloud.jp/archives/11084)

⇊僕は今回「freenom」使ったので参考にしました。

- [AWS SESで送信ドメイン認証を設定する] (https://qiita.com/OMOIKANESAN/items/1b8941258fb7ebbdb057)
- [[ACM] SSL証明書発行時のドメイン認証メールをSESで受け取ってみた] (https://dev.classmethod.jp/cloud/aws/acm-verifydomain-ses/)