無償SSLのCertificate Manager、S3、Cloud Frontで、独自ドメインの静的HTTPSサイトを作る

独自ドメインに対して、Amazonが無償で提供するSSL証明書を使って、S3でホスティングする静的HTTPSのサイトを作るまでを、 www.flyingwhale.net を例に説明します。
 www.flyingwhale.net をご自身のドメインに書き換えてください。

## 1. S3バケットを作成し、HTMLをアップロードする

S3の画面を開き、「バケットを作成」を行います。バケット名は適当です。

![Screen Shot 2016-05-21 at 12.41.58.png](https://qiita-image-store.s3.amazonaws.com/0/3413/9e32f86f-3479-122a-5cf4-876483c887ef.png)

アップロードはWeb画面からでもできますが、AWS CLIをインストールして、rsyncで行ったほうが、楽ですし、自動化もし易いです。

* CLIのインストール: [http://docs.aws.amazon.com/ja_jp/kinesis/latest/dev/kinesis-tutorial-cli-installation.html](http://docs.aws.amazon.com/ja_jp/kinesis/latest/dev/kinesis-tutorial-cli-installation.html)

```
aws s3 sync --region ap-northeast-1 ./site/ s3://www.flyingwhale.net
```

## 2. 寄り道 Certificate Managerでドメインを認証するためのメールアドレスを用意する

Certificate Managerでドメインを認証するには、以下のいずれかのメールアドレスで認証URLを受信する必要があります。

* postmaster@flyingwhale.net
* hostmaster@flyingwhale.net
* webmaster@flyingwhale.net
* admin@flyingwhale.net
* administrator@flyingwhale.net

以上のメールアドレスが受信可能であれば問題ありませんが、AWSの別のサービスを使うことで、受信することもできます。これらも従量課金であるため、一時利用であればほとんど料金はかかりません。

SNS を開き、「Create Topic」を行います。適当な名称をつけます。

![Screen Shot 2016-05-21 at 12.57.52.png](https://qiita-image-store.s3.amazonaws.com/0/3413/62f3f604-fe34-3bca-e1da-e610b843d74c.png)

「Create Subscription」を行います。ProtocolにEmailを選び、EndPointに転送先のメールアドレスを指定します。

![Screen Shot 2016-05-21 at 13.00.02.png](https://qiita-image-store.s3.amazonaws.com/0/3413/96ac817d-087a-bb9a-c96f-0e55e7346b4c.png)

「Create Subscription」を押下後、アドレス確認メールが送られるので、そのメールのURLをクリックします。SubsctiptionIDの部分がPendingでなくなれば成功です。

![Screen Shot 2016-05-21 at 13.03.51.png](https://qiita-image-store.s3.amazonaws.com/0/3413/99af080d-1bfa-f774-9eee-a588afd0795f.png)

SES を開き、「Domain」メニューから、「Verify a New Domain」を行います。画面のように入力します。

![Screen Shot 2016-05-21 at 13.07.06.png](https://qiita-image-store.s3.amazonaws.com/0/3413/b41ddc7d-5db9-b7f6-879c-f3c2b271de82.png)

その後に表示される各DNSレコードを、ドメインに設定します。一部表示できていない部分もありますが、「Download Record Set as CSV」からCSVにて確認することができます。

![Screen Shot 2016-05-21 at 13.07.43.png](https://qiita-image-store.s3.amazonaws.com/0/3413/23e1d1d3-b324-4746-0140-0adf60aa6c30.png)

お名前.comで取得したドメインにて、設定を入力したスクリーンショットはこちら。

![Screen Shot 2016-05-21 at 13.16.17.png](https://qiita-image-store.s3.amazonaws.com/0/3413/9e0ca397-fc32-fcd9-e477-4f1396401ace.png)

しばらく待つと、Statusがverifiedに変わります。

![Screen Shot 2016-05-21 at 13.28.17.png](https://qiita-image-store.s3.amazonaws.com/0/3413/2b96da57-bcb6-7397-5e64-78261ad49232.png)

SES のメニューから「Email Receiving」の「Rule Sets」を開きます。default-rule-setが既に有効になっているため、「View active rule set」から「Create Rule」を行います。受信するメールアドレスを入れます。

![Screen Shot 2016-05-21 at 13.22.16.png](https://qiita-image-store.s3.amazonaws.com/0/3413/ac07f77f-e86f-3f43-085d-334a68a65b1b.png)

Actionsでは、SNSを選択し、先ほど作成した設定を入れます。UTF-8を設定したほうが無難です。

![Screen Shot 2016-05-21 at 13.22.58.png](https://qiita-image-store.s3.amazonaws.com/0/3413/d34c0ef2-f036-c6a5-ec2f-9613b1d4a00f.png)

あとは適当にルール名を入力します。これで、admin@flyingwhale.netに送付されたメールが、転送されます。なお、特に編集していないため、JSON形式で送られて来ます。

![Screen Shot 2016-05-21 at 13.23.58.png](https://qiita-image-store.s3.amazonaws.com/0/3413/eb26507a-6c2b-7ffe-b044-014d21ea479a.png)

## 3. Certificate Managerでドメインを認証する

Certificate Managerを開き、「証明書のリクエスト」を行います。

![Screen Shot 2016-05-21 at 14.17.51.png](https://qiita-image-store.s3.amazonaws.com/0/3413/982f5d27-8a86-f3ed-02c5-61f898a028ce.png)

転送されてきたメールの、URLにアクセスし、「I aprove」を実行します。

![Screen Shot 2016-05-21 at 14.20.07.png](https://qiita-image-store.s3.amazonaws.com/0/3413/1e316342-ce30-074a-7bfa-3f6b6297db23.png)

状況が「発行済み」に変わったらCertificate Managerですることは以上です。

![Screen Shot 2016-05-21 at 13.37.08.png](https://qiita-image-store.s3.amazonaws.com/0/3413/5cf03699-be69-830e-ff62-a718141444ab.png)

## 4. Clound Front でS3の内容を公開する

Cloud Frontを開き、「Create Distribution」を行います。Webの「GetStart」を行います。ここで、Origin Domain NameにS3のバケットを指定します。またこの時に画像のように設定し、同時にCloud FrontからS3バケットへのアクセス権を設定すると楽です。

![Screen Shot 2016-05-21 at 13.40.25.png](https://qiita-image-store.s3.amazonaws.com/0/3413/5dc191e9-d594-b1dc-d5ca-6e2fae6ae1b2.png)

折角なので、Redirect HTTP to HTTPSを設定します。

![Screen Shot 2016-05-21 at 13.40.44.png](https://qiita-image-store.s3.amazonaws.com/0/3413/55231640-ff84-9d0b-faa7-26daba501142.png)

Alternate Domain Namesに公開ドメインを入力します。また、Custom SSL Certificateを選び、Certificate Managerで設定したドメインを選びます。

![Screen Shot 2016-05-21 at 13.44.15.png](https://qiita-image-store.s3.amazonaws.com/0/3413/cf58470b-c212-7ee9-45e3-1e20a2021603.png)

Default Root Object にindex.htmlを設定します。これで作成を行います。

![Screen Shot 2016-05-21 at 13.44.37.png](https://qiita-image-store.s3.amazonaws.com/0/3413/a2431eb8-f63c-e00d-a6fd-b5d4c08964a1.png)

メニューのDistributionを開き、Domain Nameを確認します。このDomain NameをドメインDNSにCNAMEで設定します。これにより、ドメインはCloudFｒontを参照するようになります。

![Screen Shot 2016-05-21 at 13.47.23.png](https://qiita-image-store.s3.amazonaws.com/0/3413/75cc93ab-c256-2a25-2add-a1a310c29897.png)

お名前.comで指定したスクリーンショットはこちら。

![Screen Shot 2016-05-21 at 13.47.33.png](https://qiita-image-store.s3.amazonaws.com/0/3413/35347b1a-c418-df35-23b4-a6d0d4e7c1f7.png)

その後、Cloud FrontのStatusがDeployedになるのを待ちます。そして、URLにアクセスすると、HTTPSでコンテンツにアクセスできるようになります。

![Screen Shot 2016-05-21 at 14.16.25.png](https://qiita-image-store.s3.amazonaws.com/0/3413/d773494b-2697-b6d9-b963-75351af23dde.png)

https://www.flyingwhale.net/

![Screen Shot 2016-05-21 at 14.43.48.png](https://qiita-image-store.s3.amazonaws.com/0/3413/deb77600-eeee-fa6d-b6d7-3ae293d1b7a8.png)