【画像付き】AWSでSSL化させる【丁寧に解説】

#前提
* EC2にデプロイ済みであること
* ドメインを取得しElastic IPと紐付けていること。つまり`http://ドメイン名`でサイトにアクセスできるようになっていること。

ドメインの取得方法は下記記事を参考にました！  
> [【ドメイン取得】お名前.comとawsでドメイン取得](https://qiita.com/nakanishi03/items/25278fb4dfad60ebfac4)


#そもそもSSL化ってなに？
簡単にいうと**「セキュリティが強い、安全なサイトにすること」**です。
詳しい説明は下記記事を参考にしてください。
> [SSLって何？意味や仕組みをわかりやすく解説！](https://ssl.sakura.ad.jp/column/ssl/)


#方法

1. Certificate ManagerでSSLサーバー証明書を発行  
2. ロードバランサーにてSSLサーバー証明書とEC2インスタンスを紐付ける
3. EC2インスタンスのポート開放
4. 動作確認

この順番で行きたいと思います。
まずはゴールを御覧ください。

###最終形のイメージ
![スクリーンショット 2020-11-17 18.54.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/7f236204-0a2a-e76e-9b78-5294f12c1161.png)
>　引用 [AWSでWebサイトをHTTPS化 全パターンを整理してみました](https://recipe.kc-cloud.jp/archives/11067 "AWSでWebサイトをHTTPS化 全パターンを整理してみました")

###ポイントは２つ！
* 今回はサーバー証明書はCertificate Managerで取得して、ロードバランサー（ELB）に紐づける
* EC2とELBは__HTTP通信__。ELBとクライアントを__HTTPS通信__するよう設定する

では行ってみましょう！

# 1. Certificate ManagerでSSLサーバー証明書を発行
###Certificate Manager

まず検索バーで**Certificate Manager**を検索
![スクリーンショット 2020-11-18 19.04.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/9cd15c2c-c6dd-63b8-c9b3-b05a7b9fccad.png)

今すぐ始めるを選択
![スクリーンショット 2020-11-18 19.06.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/44a0f929-fa6e-0601-f115-95a2cf60445d.png)

**証明書のリクエスト**を選択
![スクリーンショット 2020-11-18 19.07.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/441986ba-79a8-1bfb-1ddc-9331fc9c39dc.png)

取得したドメイン名を入力します。例：〇〇.com など
![スクリーンショット 2020-11-18 19.09.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/67f0978f-ac89-3e3e-458d-8b60f538ad48.png)

**DNSの検証**を選択し次へをクリック
![スクリーンショット 2020-11-18 19.10.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/d34d706c-1b4b-8e05-0741-ff1e75edb837.png)

何も入力せずに**確認**を選択
![スクリーンショット 2020-11-18 19.11.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/328502b7-e104-87e8-12d9-925a7fee0ed2.png)

入力したドメイン名が出現します。
**確認とリクエスト**をクリック
![スクリーンショット 2020-11-18 19.11.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/a0700466-b77d-9336-6134-9583d5e056fa.png)

そうするとDNSの検証の準備が始まります。
状況が**「検証保留中」**と出ているはずです。
ドメインの名の横の**「 ▼ 」**をクリックすると名前、種類、値のレコードが出てきます。
この値をメモアプリに保存しましょう。
※**DNS設定をファイルにエクスポート**でも値は確認できます。
![スクリーンショット 2020-11-18 19.19.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/f3902ca9-1aac-1b3c-64b5-3101aa2458a0.png)

### Route53

Route53に移ります。
指定したドメインのホストゾーンで**レコードを作成**をクリック。
![スクリーンショット 2020-11-18 19.24.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/2a056034-b0b6-7045-a9b7-697cbd29b75a.png)

シンプルルーティングを選択し、次へをクリック。
![スクリーンショット 2020-11-18 19.27.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/0f2f4680-0a9c-ae18-6fc5-38569d71432f.png)

**シンプルなレコードを定義**をクリック。
![スクリーンショット 2020-11-18 19.27.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/66eaf30c-71af-1944-cd31-86193eecd737.png)

**エンドポイントを選択**をクリック。
**レコードタイプに応じたIPアドレスまたは別の値**を選択
![スクリーンショット 2020-11-18 19.29.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/c23238cb-71f6-e7ec-80a3-ad8118161ffe.png)

先程のメモをご用意ください。
レコード名に、**「名前」**を
ルーティング先に、**「値」**をコピペ。
レコードタイプは**「CNAME」**を選択し、シンプルなレコードを定義をクリック。
![スクリーンショット 2020-11-18 19.30.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/3cc157a1-5907-6366-e8b1-d3dc54296c57.png)

このようにタイプCNAMEのレコードができたら準備OKです。
![スクリーンショット 2020-11-18 19.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/e338a57c-bf56-5336-e778-488bf52bdc00.png)

###Certificate Manager
再びCertificate Managerに戻り、以下のように**「発行済み」**になっていたらSSLサーバー証明書の発行が完了です。
![スクリーンショット 2020-11-18 19.20.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/71484bc4-8c3f-f629-fe66-d7c5167a26c6.png)

ここまでよろしいでしょうか？
どんどん行きましょう！！

# 2. ロードバランサーにてSSLサーバー証明書とEC2インスタンスを紐付ける
### ロードバランサー

EC2のページから**ロードバランサー**をクリック。
![スクリーンショット 2020-11-20 18.37.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/7e905c72-f9da-b07b-5d90-773df5946f69.png)

ロードバランサーの作成をクリック。
※筆者は既にロードバランサーを１個作ってあるため、下に表示されています。
![スクリーンショット 2020-11-20 18.38.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/df46e35e-cf13-ce7c-ee3c-4e9a1856283d.png)

Application Load Balancerの作成をクリック。
![スクリーンショット 2020-11-20 18.39.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/33f4334a-e856-6ada-8567-398837860158.png)

任意の名前を記入し、
リスナーの追加で**HTTPS**を追加。
アベイラビリティーゾーンでは２つ以上、サブネットを選択します。
その後**次の手順**をクリック
![スクリーンショット 2020-11-20 18.41.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/858b480f-1900-f00c-54ec-ef54641c83a6.png)

**ACMから証明書を選択をする**を選択、
証明書の名前は先程作成した証明書を選択してください。
その後**次の手順**をクリック。
![スクリーンショット 2020-11-20 18.44.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/a47c65dd-4d5d-2c48-c1bd-09ba181aed63.png)

EC2インスタンスが使っているセキュリティーグループを選択し、
その後**次の手順**をクリック。
![スクリーンショット 2020-11-20 18.45.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/4d879c73-a3a2-4474-55b9-7be3c9373a88.png)

ターゲットグループに任意の名前を付けます。
**プロトコルはHTTP、ポートは80のデフォルト設定でOKです。**
EC2インスタンスとELBはHTTP通信のためです。
その後**次の手順**をクリック。
![スクリーンショット 2020-11-20 18.46.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/ac753b02-d3d8-0d12-ae26-90c9bd28f95c.png)

任意のEC2インスタンスを選択肢し登録します。
その後**次の手順**をクリック。
![スクリーンショット 2020-11-20 18.47.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/f36f0001-030f-91f7-64bf-e8a421f6ea3b.png)

確認画面です。
作成をクリック。
![スクリーンショット 2020-11-20 18.49.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/5c3bfff3-3ece-a172-59a4-f06dd4b311de.png)

下記の通りになればバランサー制作完了です！
![スクリーンショット 2020-11-20 18.52.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/c84d0148-bdb1-281c-0969-8c85d431538a.png)

お疲れさまです！
後もう少しです！

###Route53
Route53に戻り、先程作ったロードバランサーとドメインを紐付けます。

タイプAのレコードを選択して**編集**をクリック。
![スクリーンショット 2020-11-20 19.13.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/c7c5637e-56c9-0e8c-f3f0-4ba94ecb64f0.png)

ルーティング先を先程作ったロードバランサーと紐付け、変更を保存をクリック。
![スクリーンショット 2020-11-20 19.12.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/2e4dca40-08c2-9bac-b8a2-9cb111f32153.png)

# 3. EC2インスタンスのポート開放
###EC2
EC2インスタンスのポートを下記のように開放します。
![スクリーンショット 2020-11-20 18.55.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/9ec33a04-064a-da18-cce7-ccb5180c50c9.png)

以上で完了です！！！！
それでは`https://ドメイン名`で検索してみましょう！

# 4. 動作確認
下記のように鍵マークが付けば完了です！！
![スクリーンショット 2020-11-20 18.56.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/d8cce5e1-c588-3aaf-9377-19f28b3a3f8e.png)

#まとめ
ドメイン取得紐付け後の、ドメインのSSL化を解説しました。

自分はEC2とALBの間をHTTPS通信しようとして、かなりハマりました。
皆さんにはそうなって欲しくないためココに記しました。

私自身もプログラミング初心者のため間違っていることが、ありましたらご指摘ください。
最後まで読んでいただき、ありがとうございました！