【AWS】https://無料ドメインSSL化　

#はじめに
AWSならSSL証明書の発行が無料！
独自ドメインの取得も可能なのでAWSだけで「デプロイ」「ドメイン取得」「SSL証明書取得」と一元化できます。
この記事では独自ドメインの取得と、SSL証明書の取得方法をAWS公式の記事を引用して紹介します。
また、いろんな方がSSL証明書の取得方法を紹介されてますが、アップデートの多いAWSですのでここでは「2021年新春版」という事で記事にまとめさせていただきました。
より詳しい手順を知りたい方は、下記に参考にさせていただいた記事をまとめてますのでそちらをご参照ください。


#目次
１、ドメインの取得（Route 53）
２、SSL証明書の発行（Certificate Manager）
３、ロードバランサーの作成（EC2）
４、DNSを設定する（Route 53）


#手順
以下の手順で進めました。



#１. ドメインの取得（Route 53）
AWS公式のガイドに遷移するとステップ１、ステップ２、ステップ３がありますが、「ステップ 2: ドメイン名を登録する」のみを参考にしてください。
ここでは主に名前や住所など個人情報を入力しドメインを購入しました。
価格は＄9〜購入可能です。

https://aws.amazon.com/jp/getting-started/hands-on/get-a-domain/


#２. SSL証明書の発行（Certificate Manager）
####ACM (AWS Certificate Manager) 
AWS公式ガイドにしたがって作業を進める中で注意するポイントが３点ありました。
https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/gs-acm-request-public.html

####1.　「www」
ドメイン名の追加にきたら先程購入したドメイン入力します。ここでの注意点は「www」を追加する事でした。
`www.example.com`
example.comの部分が先程購入したドメインになるようにします。
![スクリーンショット 2021-01-27 13.30.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/784da069-4d57-728d-ea36-516c4f750278.png)



####2. 「DNS」
次のページ検証方法の選択では「DNSの検証」を選択しました。
![スクリーンショット 2021-01-27 13.47.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/b1e85de1-1170-f1ed-bb83-1974085a5ff9.png)

次に、タグを追加のページでは任意の名前と値を入力して進んで行くと検証の画面に遷移しました。
![スクリーンショット 2021-01-27 13.53.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/3cf6bd71-efda-ec2b-72c7-0e6521cfcacc.png)

###3.　「Route53でレコードの作成」
ここでドメイン（もしくは続行を押して証明書の管理画面）でドメインをクリックすると「Route53でレコードの作成」ボタンがあるのでそちらをクリックしました。
![スクリーンショット 2021-01-22 6.27.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/9fed7ed1-f225-f258-2f1b-ebdf5b368b2b.png)

しばらくしてリロードすると「発行済み」になります。


※「検証保留中」から変化がない場合は下記の記事も参考にしてみてください。
【AWS】SSL(ACM)証明書が「検証保留中」のエラー解決
https://qiita.com/AKI3/items/0ca59855093dd429923d

# ３、ロードバランサーの作成（EC2）
####ELB(Elastic Load Balancing)
AWS公式ガイドではステップ１〜ステップ８までありますが、ステップ１と２を注意しました。
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-application-load-balancer.html


####ステップ１
３つの選択肢がありますが
`Application Load Balancer`を選択しました。

####ステップ２
HTTPSのリスナーの設定をしました。
![スクリーンショット 2021-01-27 15.02.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/47db01bb-49e0-4e69-dc04-96c52c2151b7.png)

####ステップ??
こちらは公式ガイドでは見受けられませんでした。（見落としてるだけ？）
「手順 2: セキュリティ設定の構成デフォルトの証明書の選択」では「ACMから証明書を選択する」を選択して「証明書の名前」は先程発行した証明書を選択しました。

![スクリーンショット 2021-01-27 15.25.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/9edc20b9-4d06-c493-6f96-a7ff8c3c8b90.png)



# ４、DNSを設定する（Route 53）
####DNS（Domain Name System）
再びRoute 53に戻ります。
AWS公式ガイドの「ステップ 3: DNS を設定する」完全修飾ドメイン名 (FQDN) を参考に設定をおこないました。
https://aws.amazon.com/jp/getting-started/hands-on/get-a-domain/

ガイドにしたがってホストゾーンに遷移するとRoute 53で作成したドメインが表示されてました。
これはRoute 53でドメインを取得するとホストゾーンが自動生成されるそうです。

ドメインをクリックすると詳細画面に遷移します。そこに３っつのドメインが並んでました。
自動生成されたときはタイプ`NS`と`SOA`がデフォルトでセットされてるそうです。
その後SSL証明書の発行をしたとき「Route53でレコードの作成」ボタンを押した際３っつめのタイプ`A`が追加されるそうです。

####「レコードを追加する」
ここから大幅に公式ガイドから違う表示なってました。
先ず、レコード名の部分に「www」を入力します。

![スクリーンショット 2021-01-27 15.56.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/11715688-f2fa-2396-3f14-433c65ebe08b.png)


エイリアスを「青」にし、トラフィックのルーティング先を以下のように設定しました。

このホストにある別のレコードへのエイリアスは「application Lord BalancerとClassic Lord Balancer」を選択しました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/e7a8a5a8-d6a0-c72b-13ee-f78bebe1ecf2.png" width="300px">

次にリージョンの選択では「東京」を選択しました。（自分のリージョンが東京なので）
最後にロードバランサーの選択をクリックすると先程作成したロードバランサーが表示されましたのでそちらを選択しました。

「作成」をクリックするしレコードを確認するとタイプ`CNAME`のレコードが追加されてました。
以上で完了です。


https://でアクセスすると無事ページが開けました！

#感想
慣れると簡単な作業にも思えますが、最初設定したときはエラーも発生して結局3日くらいかかってしまいました。
いろいろな方の記事も参考にさせていただきましたが、記事の内容（AWS公式ガイドも）と実際が違う部分も多く苦労しました。
AWSは頻繁にアップデートされてるそうなので情報のキャッチアップが大切です。

###最後に
エンジニア初学者ですが、同じ様に悩んでる方々の助けになればと思い記事を投稿しております。
万が一情報が間違っている場合ご指摘していただけると幸いです。

#参考
https://dev.classmethod.jp/articles/aws-web-server-https-for-beginner/

https://qiita.com/masch/items/a5ef84998fb7784f9115

https://recipe.kc-cloud.jp/archives/11084