AWS、EC2でrailsアプリをssl化する！【2021最新版】

まずは参考URLを先に貼り付けておきます。これらを参考にすればうまいことssl化が出来ます！

https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556

https://qiita.com/Yuki_Nagaoka/items/55ed1610cfc1f59398b1

https://dev.classmethod.jp/articles/alb-redirects/

はっきり申し上げます。僕ssl化するだけなのに６時間以上悪戦苦闘しました。
と言うのも、AWSのロードバランサー、ターゲットグループの設定が既存の記事とやることは一緒でも、異なる仕様に変わってしまっているからでした。
なので複数の記事を参考にしてまとめたものをアウトプットしていきます！

# 前提条件
すでに（http://ドメイン名）でデプロイ済み

# ssl化の手順の確認
* ACMの設定
* TGの設定
* ELBの設定
* セキュリティグループの設定
* Route53の設定
* リダイレクト処理

# ACMの設定
AWSではELB（後で設定します）を利用しているとACM（AWS Certificate Manager）を使用する事ができ、ACMで無料でSSL証明書を利用する事が可能です。

1. AWSの検索欄でACMを検索し開く
1. 証明書のプロビジョニングを選択![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/fd427126-3a75-4455-35e0-2debe8d300fa.png)
1. ドメイン名記述
1. DNSの検証を選択
1. 内容確認をして確定とリクエスト

とりあえずこれで発行済みとなればOK！

[![Image from Gyazo](https://i.gyazo.com/185329e6026970582b23016a2806acfd.png)](https://gyazo.com/185329e6026970582b23016a2806acfd)

これでssl証明書が発行されました。

# route53の設定

値を確認して
![スクリーンショット 2021-12-18 20.29.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/bef8b69f-3fff-e743-210b-90863989b557.png)

こちらに記載
![スクリーンショット 2021-12-18 20.26.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/c66a981e-1063-76a5-d42f-459c034be904.png)


# TGの設定
1. ターゲットグループページに遷移[![Image from Gyazo](https://i.gyazo.com/81b8877c1dc7b669f49826771e5e8015.png)](https://gyazo.com/81b8877c1dc7b669f49826771e5e8015)
1. create target groupを選択
1. instancesを選択[![Image from Gyazo](https://i.gyazo.com/cb6d4bdfe19149117124b571ba2e6942.png)](https://gyazo.com/cb6d4bdfe19149117124b571ba2e6942)
1. 以下のように設定![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/167b3e1d-5aa4-85e3-8baf-3d8660cd8c76.png)
1. nextを選択
1. 対象アプリにチェックを入れてinclude...をクリック
1. 最後にcreate target group

# ELBの設定
1. ec2のところからロードバランサーを選択[![Image from Gyazo](https://i.gyazo.com/ddd450991d864f21e6b30ade6dd222ba.jpg)](https://gyazo.com/ddd450991d864f21e6b30ade6dd222ba)
1. ロードバランサーの製作を選択してさらに「http,https」の項目を選択[![Image from Gyazo](https://i.gyazo.com/f407adc5693bb8207ccb40b91b831ba8.jpg)](https://gyazo.com/f407adc5693bb8207ccb40b91b831ba8)
1. 必要項目を記述していきます。
    2. Basic configuration[![Image from Gyazo](https://i.gyazo.com/a68a50b9f07502d2a0466444ade99408.png)](https://gyazo.com/a68a50b9f07502d2a0466444ade99408) 
    2. Network mappingは「ap-northeast-1a」「ap-northeast-1c」を選択
    2. Security groupsは対象アプリのものを選択（ec2のインスタンスから確認できます）
    2. Listeners and routingは先ほど作った「アプリ名-TG」を選択
1. Create load balancerを選択してELBの作成が完了
1. 作成したELBを選択して、さらにリスナーを選択し、リスナーの追加をする[![Image from Gyazo](https://i.gyazo.com/d0e1080587521e2a342c22b237000a2c.png)](https://gyazo.com/d0e1080587521e2a342c22b237000a2c)![スクリーンショット 2021-10-06 23.36.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/cdac42b9-14fe-e9f4-fafe-fa0fbf9d80e0.png)

    2. プロトコルポート：「HTTPS」「443」
    2. デフォルトアクション：「アクションの追加」ボタンを選択
    2. 「転送先」を選択し、「アプリ名-TG」を選択
    2. セキュリティポリシー：「ELBSecurityPolicy-2016-08」
    2. デフォルトの SSL 証明書：「ACMから（推奨）」「ドメイン名」
    2. 保存ボタンを選択 
   
# セキュリティグループの設定
1. ec2の対象インスタンスからセキュリテイグループを選択
1. インバウンドルールからEdit inbound rulesを選択
1. 以下のように選択[![Image from Gyazo](https://i.gyazo.com/0cc7c1f8d9d7b4fe47dd7be18468fd63.png)](https://gyazo.com/0cc7c1f8d9d7b4fe47dd7be18468fd63)
1. 追加する

# Route53の設定
1. 対象アプリのホストゾーンからAレコードを選択しレコードを編集[![Image from Gyazo](https://i.gyazo.com/90280df042b5968318028eebb884c3d4.png)](https://gyazo.com/90280df042b5968318028eebb884c3d4)
1. エイリアス先をONにして、東京時間、「アプリ名-ELBを選択」に修正する
1. レコードセットの保存をする

# リダイレクト処理
1. ロードバランサーに移動[![Image from Gyazo](https://i.gyazo.com/ddd450991d864f21e6b30ade6dd222ba.jpg)](https://gyazo.com/ddd450991d864f21e6b30ade6dd222ba)
1. アプリ名-ELBを選択
1. [リスナー]タブを開く
1. HTTP の[ルールの表示/編集]を選択
1. 以下のように*を記述![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/3c822942-07ff-3206-eee8-241c5b8844f4.png)　（引用：https://dev.classmethod.jp/articles/alb-redirects/）
1. 以下のように記述![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/2706aa4c-4c35-f484-fc18-d4aa2a8e2ffc.png)　（引用：https://dev.classmethod.jp/articles/alb-redirects/）

# 最後に

以上で完成になります。「https://ドメイン名」で検索してみてください。「http://ドメイン名」でも検索するとリダイレクト処理で「https://ドメイン名」に飛ぶはずですので確認してください。

これするのにまる1日かかったわ。。。