AWSでSSL証明書を発行ACMの話とSSLとDNS等について

はじめに
-
最近AWSで環境構築を行った際に、https接続させたくて、AWSでSSL証明書を発行できるACMを利用したので、その時の備忘録。

---
#AWS ACMとは？

---
<b>AWS Certificate Manager</b>の略だそうです。
AWS環境で使用できる無料のSSL/TLS証明書発行サービスです。

---
##SSLとは？

---
SSL（Secure Sockets Layer）とはデータを暗号化して送受信する為のプロトコルです。
SSLを使用する事で、個人情報等、他人に盗み見されたら困る様なデータを安全に通信出来るわけです。
このSSLプロトコルによって提供されるセキュアな接続の上でHTTP通信を行う事がHTTPSです。

---
##じゃあSSL証明書って？

---
SSL証明書とは、情報を暗号化するSSLの機能に加え、ウェブサイトを運営する会社の身元を確認できる機能を備えた電子証明書です。
暗号化に使う以外にも、通信先の身元も保証してくれるわけです。
例えば、銀行や通販サイトなどを装った悪質なサイトなどに誤って個人情報を送信してしまわないように、そのwebサイトの証明書を見る事でそのサイトの信頼性を確認できます。

---
<img width="320" alt="スクリーンショット_2016-08-08_0_01_32.png" src="https://qiita-image-store.s3.amazonaws.com/0/93763/a2f9c69f-083a-1599-4c30-c8c53a21c507.png">

---
##無料証明書とは？

---
証明書には種類があり、高価なもの程厳重に保証されます。
すなわち、本来は有料なのです。
昨今はDV証明書が無料で発行できるようになり、今回のACMもそれにあたります。

---
| | 確認方法と証明レベル |
|:-:|:-:|
| EV証明書  |  Webサイト運営者の身元をより厳格に書類と電話で確認して証明 |
| OV証明書  |  Webサイト運営者の身元をメールと電話で確認して証明 |
| DV証明書  |  そのドメインの使用権があることを証明 |

---
#実際に発行してみる

---
ではSSLの概要は説明出来たと思うので、実際に発行手続きを行います。
まずはサービス一覧からCertificate Managerを選択します。
<img width="287" alt="スクリーンショット_2016-08-08_0_22_09.png" src="https://qiita-image-store.s3.amazonaws.com/0/93763/9b6f2a02-0c5a-1b73-5863-5f033e35c9e3.png">

---
##次に「今すぐ始める」から証明書を作成していきます。

<img width="320" alt="スクリーンショット_2016-08-08_0_34_11.png" src="https://qiita-image-store.s3.amazonaws.com/0/93763/9b06a988-5c11-eb69-bb07-b0a0743cefab.png">

---
##ステップ1でドメイン名を指定します。

![スクリーンショット 2016-08-17 15.56.37.png](https://qiita-image-store.s3.amazonaws.com/0/93763/c3b360d1-141b-5212-a698-2488dd8dad0f.png)



---
##ステップ2で確認が入ります。
![スクリーンショット 2016-08-17 15.56.55.png](https://qiita-image-store.s3.amazonaws.com/0/93763/0b9bd8be-c876-ce9f-1071-9bc015d16976.png)

---
##ステップ3で続行を押すと確認用のメールが飛びます。
![スクリーンショット 2016-08-17 15.57.08.png](https://qiita-image-store.s3.amazonaws.com/0/93763/5abe246f-371b-489c-b5ce-dc56efab4af2.png)

---
##確認用のメールについて
ここで注意が必要なのですが、
証明書を発行するにあたって、作成したドメインを使用したメールに対して確認メールが送られます。
ですので、このドメインでメールを受信出来るようにしておく必要があります。

---
これは <b>対象のドメインでメールを受信する = ドメインが存在する</b> という確認になります。
上記の「無料証明書とは？」で説明したDV証明書のそのドメインの使用権があることの証明をメールで確認しているわけですね。

---
##確認用メールで承認

---
メールが届いたらメールに書いてあるURLに飛ぶと下記のような確認ページに案内されます。
ここでApproveを選択すると証明書が発行された事になります。
<img width="400" alt="スクリーンショット_2016-08-05_19_03_14.png" src="https://qiita-image-store.s3.amazonaws.com/0/93763/7d4c9649-2737-bf02-787c-cd25a30b56ea.png">

このメールの確認を行うまでは未検証だったステータスが、発行済に変わります。

---
↓認証前
![スクリーンショット_2016-08-05_18_50_32.png](https://qiita-image-store.s3.amazonaws.com/0/93763/3e818291-466f-fe53-4e16-bbcdf0340b70.png)

↓認証後 この状態になれば使用可能です。
![スクリーンショット_2016-08-05_19_02_54.png](https://qiita-image-store.s3.amazonaws.com/0/93763/76344a65-29cf-d04e-4974-7e02c8854708.png)

---
##ELBで選択
証明書の発行ができたら、ELBのリスナータグのSSL証明書の欄からSSL証明書が選択出来るようになります。
これで無事にHTTPS通信ができるようになるわけです。
![スクリーンショット_2016-08-05_19_03_43.png](https://qiita-image-store.s3.amazonaws.com/0/93763/9744443b-8de7-b648-d3ec-b1929ecd8c2f.png)

---
#DNSについて

---
さきほど証明書を発行したドメインを仮に「kinpira.co.jp」とします。
kinpira.co.jp宛にメールが来た場合に管理するメールサーバーに行くようにしなくてはなりませんでした。
その流れでDNS周りについても簡単に書いておこうと思います。

---
##DNSとは

---
IPアドレスを人が管理しやすい文字と紐づけるシステム。
<b>Domain Name System</b>の略です。
この管理しやすい文字にした物をドメインと言います。

---
##名前解決

---
ドメインからIPアドレスを引っ張ってくる事を名前解決と言います。
この名前解決にはドメイン名を管理するドメインサーバーを通って解決します。

---
##ドメインの構成

---
ドメインには下記の図のように階層があり、その階層毎にドメインサーバーが存在します。
![basics_2.gif](https://qiita-image-store.s3.amazonaws.com/0/93763/135d1ff4-195c-bdc1-c5ae-718081426d41.gif)

---
トップレベルの階層のjpのドメインサーバーは第2階層のドメインサーバーへの送信先を知っているので、そっちに案内します、今度は第2階層のcoのドメインサーバーは第3階層のexampleドメインサーバーまで案内します。

---
こんな感じで上位階層からドメインサーバーをたどって行き最後にIPアドレスと紐づいているドメインサーバーまで案内されたら、名前解決を行います。

![basics_a.gif](https://qiita-image-store.s3.amazonaws.com/0/93763/a4a65ed5-ff29-e54f-d1fb-d68721b4911b.gif)

---
##登録したドメインをメールサーバーへ紐づける

---
上記で説明した通りドメイン名には必ずゴールとして転送先のIPアドレスが紐づきますが、今回登録したkinpira.co.jp宛にメールが来た際はどこに案内するのかをドメインサーバーに登録する必要があるわけです。
今回はAWSの Route 53 を使用してMXレコードタイプでkinpira.co.jpと転送先のメールサーバーを紐づけます。

---
後はメールサーバー側で設定をしてあげればメールが届くようになります。
<img width="1341" alt="スクリーンショット_2016-08-08_1_51_35.png" src="https://qiita-image-store.s3.amazonaws.com/0/93763/65eb8275-6eea-e95f-9492-e85706dc9776.png">


---
#最後に
今回証介したACMはDV証明書なのであくまで暗号化通信用であって、サイトの証明には使えませんね。
ただ、証明書の発行ってもっと面倒なイメージがあったのですが、AWS内で限定ですが手続きしてから発行までも数分完了するACMの手軽さにはビックリしました。