【初心者だよ その2】 AWSで無料SSLをやってみた

# まえふり
　前回、AWSとドメインの契約からサブドメインを設定してサイトへアクセスできるまでをまとめてお話ししました。
　今回は、以下の記事で***AWSだと無料でSSLの対応ができる***ことを知ったので挑戦してみました！！

・ [[AWS Certificate Manager]東京でも無料でSSL証明書が使用可能になりました！](http://dev.classmethod.jp/cloud/aws/acm-available-in-tokyo/)
・ [AWSで使用できる無料SSLサーバー証明書～AWS Certificate Managerについて](https://inaba-serverdesign.jp/blog/20160629/aws_certificate_manager_ssl.html)
・ [AWS環境ならSSL証明書が無料!?　AWS Certificate Managerについて ～番外編 SESでのメール受信～](https://www.skyarch.net/blog/?p=8265)

## AWSでの無料SSLができる構成図
![acm_intro_elb.png](https://qiita-image-store.s3.amazonaws.com/0/82601/8f7f94ab-c2cf-ad85-ccd3-9a1caafabcfd.png)
引用: http://docs.aws.amazon.com/ja_jp/acm/latest/userguide/gs-elb.html

　


### AWSで無料SSLが対応ができる理由
　先にネタバレすると***100%無料ではありません。***ここでいう『無料SSL』は、***SSL証明書の発行が無料でできる***ということのようです。
　では、なぜ***100%無料ではない***のか。それは、***SSLを適応させるEC2とELB(Elastic Load Balancing)などを扱うことで、料金が発生するから***です。
　Elastic Load Balancingは、従量課金制になっており、使用した分のみ料金が発生する仕組みになっています。

　ちなみに公式では、[『SSL/TLS 証明書は無料です。お支払いいただくのは、アプリケーションを実行するために作成した AWS リソースの料金のみです。』](https://aws.amazon.com/jp/certificate-manager/pricing/)と書かれています。


## ACM: Amazon Certificate Manager ![Security-Identity_ACM.png](https://qiita-image-store.s3.amazonaws.com/0/82601/92001bda-8958-0cdb-5016-e3c58268ae79.png)

ではまず、サイトをHTTPSにするために必要であるSSL証明書をを、ACMを扱って発行します。手順は、(だいたい)以下のようになります。

↓ ACM設定 ステップ1
![ACM登録1.png](https://qiita-image-store.s3.amazonaws.com/0/82601/470a34f2-63db-0026-5da5-bac264b0da16.png)

↓ ACM設定 ステップ2
![ACM登録2.png](https://qiita-image-store.s3.amazonaws.com/0/82601/e34dec56-83ee-a0ca-29e2-659c81cddbea.png)

↓ ACM設定 ステップ3
![ACM登録3.png](https://qiita-image-store.s3.amazonaws.com/0/82601/1bc37ed7-5314-dd89-e20f-8720f9bd8436.png)

↓ ACM設定完了後　メールが来た
![ACM登録後メール.png](https://qiita-image-store.s3.amazonaws.com/0/82601/03e9d580-3d55-d757-4a8d-4f0864aa844e.png)

↓ ACMの設定が完了したときの状態
![ACM登録完了.png](https://qiita-image-store.s3.amazonaws.com/0/82601/9a86004f-05d5-aba2-78d5-daa40c6fb969.png)

  
状態が***発行済み***と変わったら正常に設定された証拠です。
これで、SSLの発行(ACM側の設定)が完了しました。

  
次に、BLE側の設定になります。


## ELB: Elastic Load Balancing load balancer ![Compute_ElasticLoadBalancing.png](https://qiita-image-store.s3.amazonaws.com/0/82601/7b23ed0b-9803-ae30-af47-28011722843e.png)

　AWSでは、ELBと呼んでいますが一般的でいう[ロードバランサー](http://e-words.jp/w/%E3%83%AD%E3%83%BC%E3%83%89%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B5.html)になります。
　私もELBを扱うまでロードバランサーがどういうものかは負荷を分散させる何かまでは知っていたものの、実際に触ってみてどのようなしくみになっているのかは知りませんでした。これを機に調べるようになり、勉強になりました。

　手順は、(だいたい)以下のようになります。


↓ ELB設定前 タイプを選ぶ　※基本左を選択
![ELB初回.png](https://qiita-image-store.s3.amazonaws.com/0/82601/4e54afa2-ca1e-6734-48d6-f1c4a1e92fad.png)

↓ ELB設定 ステップ1
![ELB設定1.png](https://qiita-image-store.s3.amazonaws.com/0/82601/b748c732-c1dc-46cd-0d4b-8beeed0823d9.png)

↓ ELB設定 ステップ２
![ELB設定2.png](https://qiita-image-store.s3.amazonaws.com/0/82601/cd601049-de12-9fb0-2f07-ef0353058af4.png)

↓ ELB設定 ステップ3
![ELB設定3.png](https://qiita-image-store.s3.amazonaws.com/0/82601/a2915fc8-7508-93ff-bea3-a448d0206edc.png)

↓ ELB設定 ステップ4
![ELB設定4.png](https://qiita-image-store.s3.amazonaws.com/0/82601/5cccb91f-7658-65a4-f676-a96139dd52cf.png)

↓ ELB設定完了直後
![ELB設定5.png](https://qiita-image-store.s3.amazonaws.com/0/82601/758bdfdc-7340-ad08-9fda-60d7481f2837.png)

↓ ELB設定完了後
![ELB設定後のインスタンスリスト.png](https://qiita-image-store.s3.amazonaws.com/0/82601/0f5a2e3f-c853-dfb7-ff1e-c5e10ded8102.png)

↓ ELB設定完了後 メールが来た
![ELB登録後メール.png](https://qiita-image-store.s3.amazonaws.com/0/82601/9610154b-4e22-13c9-5932-183ebf41d1a8.png)

↓ ACMとELBを設定後　Route53に設定する内容
![ELB設定後のRoute53での設定.png](https://qiita-image-store.s3.amazonaws.com/0/82601/63f46f4c-4c1b-d6ac-18ab-c17bb72db8df.png)

  
これでBLE側の設定が完了。

## 全ての設定を終えて

　AWSで無料でSSL対応を行うための準備が整いました。
　
　httpsでドメインにアクセス(ドキドキ)。

![ELB設定後の確認.png](https://qiita-image-store.s3.amazonaws.com/0/82601/31d1fe37-ad18-0189-39ef-167a69d9f05e.png)
　
　??????????

　『503 Service Temporarily Unavailable』だと...www

　アクセスは一応ができているってことは、ACMでちゃんとSSL証明書を発行できている...って考えて。
　あとは、 ELBとEC2との繋ぎがうまくいっていないのかなぁ...？w

　ってことを、2,3回やり直しながら考えれるようになって、一箇所、未設定っぽいところを見つけました。
　
　　
　ELBの設定画面で、『インスタンスの登録と登録解除』を開いて見てみると、項目は出ているものの、ちゃんとチェックされていないで紐付けされていなかった感じで...たぶんこれだよな？w

↓ ELB設定にある『インスタンスの登録と登録解除』
![ELB未設定内容.png](https://qiita-image-store.s3.amazonaws.com/0/82601/5dc48524-46b0-7d4e-ecc2-318d44d0bd95.png)
  
↓ 改めてhttps://ドメインをアクセスしてみると...
![ELB設定完了後.png](https://qiita-image-store.s3.amazonaws.com/0/82601/3a92b0c6-6cab-bd30-1224-83a40c1376e6.png)

ｷﾀ━━━━(ﾟ∀ﾟ）━━━━！！！！！！！！！


これで、無事にACMとELBの設定で、EC2のサーバーにSSL対応が完了です！笑

## まとめ
　ここまでで、全てAWSでSSLを対応させたサーバーができました！
　初めてサーバーの契約してHTTPSまで対応できた瞬間は、ホント感動です笑

　まぁでも、HTTPS接続までたどり着くところまで、(土日とかでやっていたので)約3週間以上かかってしまいました笑汗 

　てことで、これにて初めてサーバーを契約して、サーバーを作ってHTTP通信ができるようにして、SSL証明書を発行してサーバーへのアクセスをHTTPS通信できるところまでをざっとお話しいたしました！
　次回以降は、作ったサーバーを使ってサーバーサイドの開発とすでに世に出ているWebAPIを使ってアレコレやってみたお話しをしていきますー。

## 次回移行のお話し
　　[【初心者だよ その1】 アプリ開発者が初めてAWSを触ってみた](http://qiita.com/gremito/items/268f84664535dadcc5b9)
　　【初心者だよ その2】 AWSで無料SSLをやってみた　　　　← いまここ