ACMで証明書を発行してからELBとRoute53を使ってWebページをHTTPS通信化するまでの構築手順（AWS）

今回はAWSのACM・Route53・ALBを使用してWebページをHTTPS通信化する方法を解説します。

##前提条件
- Windows10を使用。
- PCはDELLを使用。
- 東京リージョンを使用。
- アベイラビリティゾーンは1aと1cを使用。

##料金
今回は複数のAWSサービスを使用する為、様々な要素によって料金が発生します。
ハンズオンが終了しましたら即時に削除を推奨します。
料金が発生するタイミングについては以下の通りです。

- Route53でのドメイン購入時に料金が発生
- ELBへのアクセス時に料金が発生
- ACMでの証明書発行によって料金が発生
- EC2インスタンスのアクセス及びステータスが実行中の場合は料金が発生
- VPC作成時に料金が発生

##事前準備
- AWSアカウントを所持していること。
- ACM、Route53、EC2、VPCにアクセス権限（書き込み・読み取り）を付与していること。
- EC2インスタンスを1aと1cのアベイラビリティゾーンに作成していること。
- ELB（ALB）でターゲットグループを既存のEC2インスタンスに指定していること。
- VPCを作成していること。
- パブリックサブネットを1aと1cのアベイラビリティゾーンに作成していること。
- IGWをサブネットにアタッチしていること。
- Route53若しくは他のドメイン購入サイトで自分専用のドメインを取得していること。
- ドメイン取得後、パブリックホストホストゾーンを作成していること。

##完成後のシステム構成図
ACMから取得した証明書をALBに設定し、Route53のドメインからインターネットゲートウェイを介してアクセス。
さらに1aと1cのアベイラビリティゾーンに配置したEC2インスタンスにALBターゲットグループを指定します。
![qiita構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/33d01a08-d574-9dfc-03ea-b8f64660095d.png)

##ACMで証明書を発行する
１、検索バーに「ACM」と入力し、Certificate Managerをクリックする。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/e4c03b5e-6fef-edb4-3b91-12efe94d2590.png)

２、証明書のリクエストをクリック。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/364f255c-eb6e-b986-2cd6-fcfb351dc9a0.png)

３、パブリック証明書のリクエストを選択し、「証明書のリクエスト」をクリックする。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/434fa146-91d8-6b64-6f80-1b25f235bb11.png)

４、任意のドメイン名を入力し「次へ」をクリック。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/def66250-5323-0382-447d-83a80dd84cb9.png)

５、DNSの認証を選択し「次へ」をクリック。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/80728438-b5e1-b081-9d7e-0824b911efdd.png)

６、任意のタグを入力し、「確認」をクリック。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/62d2eeee-83fb-6657-bdfd-fc6bdf50bcb1.png)

７、入力内容を確認し「確定とリクエスト」をクリック。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/af78f351-0aa2-0cfe-835c-f525d28b427f.png)

８、検証状態が「検証保留中」であることを確認する。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/aa94360b-b226-a5b6-06f4-fab02c926535.png)

９、数分後再度確認し、検証状態が「成功」したことを確認する。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/4ff288de-29e2-923b-cb94-48d909ddd6bd.png)

##Route53にてCNAMEレコードを作成する
１、発行した証明書の▼をクリックし「Route53でのレコードの作成」をクリック。
⇒これにより、証明書の認証情報が入力されたCNAMEレコードが自動的に生成される。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/cf8b172f-c9c2-5916-3cfa-0743dd9a7c32.png)

２、Route53のコンソールへ移動し、CNAMEレコードが作成されたことを確認する。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/4fcb2977-e27a-8bb1-3105-859c233e6615.png)

##ALBを作成する
１、EC2内のロードバランサーのタブに移動し、「ロードバランサーの作成」をクリックする。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/f9f1d376-ebcd-0886-c868-89902e3f5fb0.png)

２、ロードバランサーの種類はApplication Load Balancerを選ぶ。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/eb32534d-5e0c-2e6c-4e3d-96c718884bb4.png)

３、任意のロードバランサー名を入力。スキームを「インターネット向け」を選択し、IPアドレスタイプを「ipc4」を選択する。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/861d81c1-9d68-7034-4ca8-e2f996c8a198.png)

４、リスナーの設定はプロトコルを「HTTPS(セキュアHHTP)」を選択する。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/58731fdd-007b-6069-bba7-14036b2c4167.png)

５、事前に作成したVPCとAZごと作成したパブリックサブネットをそれぞれ選択後、右下の「次の手順：セキュリティ設定の構成」をクリックする。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/bc19212a-e6c1-aa21-232f-55ed78ba2a31.png)

６、証明書タイプは「ACMから証明書を選択する(推奨)」を選択し、証明書の名前は先ほど発行した証明書を指定する。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/24505cac-e25b-4fe4-b384-1f9493d619fb.png)

７、セキュリティポリシーはデフォルトを選択し、右下の「次の手順：セキュリティグループの設定」をクリックする。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/0af83130-4fe6-11d7-4e2f-e7f37fa742a7.png)

８、「新しいセキュリティグループを作成する」を選択し、「HTTPS」「HTTP」「SSH」を追加する。
さらに、IPアドレスの許可設定はそれぞれ0.0.0.0/0を指定すること。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/e3dd4a89-90fa-ef78-5b07-5be8cc1b38e4.png)

９、事前に準備したターゲットグループを選択し、「次の手順：ターゲットの登録」をクリックする。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/0bba3545-82ee-7475-e79c-d50b3fc2c4c4.png)

１０、ターゲット先が目的のEC2インスタンスに指定されていることを確認し、「次の手順：確認」をクリックする。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/2bbdd2fa-b004-2b22-da13-20c5877e3097.png)

１１、設定内容を確認のうえ、問題が無ければ「作成」をクリックする。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/88532838-7fdd-b2d4-2f52-71056857b15c.png)

１２、ロードバランサーが正常に作成されたことを確認し、「閉じる」をクリックする。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/36324e4d-8475-ee12-bae1-a4ce81113e94.png)

##Route53でルーティング先を作成したALBに設定する
１、Route53で事前に作成したホストゾーンのコンソール画面で「レコードを作成」をクリックする。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/62d16283-ea2e-5822-fc7d-7ccdc111d9be.png)

２、任意のレコード名を入力し、レコードタイプは「A-IPv4アドレスと一部のAWSリソースにトラフィックをルーティングします」を選択する。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/f07ca551-cbf3-1634-5e62-51e73024749c.png)

３、ルーティングポリシーは「シンプルルーティング」を選択する。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/63eda6bd-5040-06cd-c569-6435688a4383.png)

４、トラフィックのルーティング先は「Application Load BlancerとClassic Load Balancerへのエイリアス」を選択する。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/16088cde-0058-c5ac-8aec-735eea533901.png)

５、先ほど作成したALBのリージョンとDNS名を選択し、「レコードの作成」をクリックしたうえで、レコードが正常に作成されたことを確認する。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/38ffaf53-e88d-7a55-5140-64dbe83188c2.png)

##動作確認
１、任意のブラウザを開き、https://<事前に取得したドメイン名>でアクセスし、正常に表示されたことを確認する。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/9bab7ee4-e301-cb9b-a1ee-216b08ba2835.png)

##終わりに
なので今回はACMを使ってWebページをHTTPS通信化する手順を説明しました。
ゼロからの構築になると、事前準備が多すぎるので今回は以下内容については割愛させていただきました。
（VPC、EC2インスタンス、ターゲットグループ、ドメイン取得、パブリックホストゾーンの作成）
少しでもお役に立てれば幸いです。