日本リージョンでは2016年の5月からサービス開始ということで、比較的新しいサービスになります。
やりたいこと
AWSに作られたウェブサイトをhttps化する
私の環境はこちら
・Kusanagiイメージから作成したEC2インスタンス
・ELBは使っていない
・日本リージョン
知っておくべきこと
・現時点(2016年10月25日)では、ACMで発行された証明書はELB(Elastic Load Balancers)もしくはAmazon Cloud Frontにのみ適用できます。EC2インスタンスに直接読み込ませるようなことはできません。
・ACMで発行した証明書自体は無料ですが、ELB、Amazon Cloud Frontの利用料は当然かかります。なので値段の上では今までELBを使っていなかった私のような人は、他の業者から証明書を買うのと変わらないかも。。ですが、他にも便利な点がたくさんあるので、AWSでサイトを運用している人はぜひ活用してみましょう。
手順
今回はELBを使ってSSL化していきます。ということでやることは大きく二つ。
1.ACMで証明書を作成する
2.ELBの設定
3.ELBのDomain nameをEC2インスタンスに紐づける
2.ELBの設定
ゴールはELB経由でhttp通信できるようになることです。(httpsではなくhttpです)
1. AWSにログインし、EC2のコントロールパネルに進みます。次に左サイドバーのLoad Balancersをクリックします
2.Create Load Balancer ボタンを押下します。Classic Load balancerを選びContinueを押します。
3.Load balancer nameにお好きな名前をいれ、表示された画面で下記のようにHTTPS通信を追加します。
4.次に表示された画面でCreate a new security groupをクリックし、TCP 80とTCP 443を許可します。
5.次に表示された画面でACMで作成した証明書を読み込みます。
6.次にHealthCheckの設定をします。
デフォルトのままでOKですが、Document Rootのindex.htmlをたたいて、Health checkをするので、index.htmlが
ないなら作って配置してください。
7.次にこのELBにぶら下げたいEC2インスタンスを選択します。
8.最後にタグをつけます。オプションなので空白でもOKです。Review and Createを押すと作成完了です。
3.ELBのDomain NameをEC2インスタンスに紐づける
ELBには固定IPが振られず、Domain nameのみ発行されます。
↓ELBのDomain nameはこんな名前のやつです。
ACM-xxxxxxx-ELB-xxxxxxx.ap-northeast-1.elb.amazonaws.com
サイトのドメイン名とこのELBを紐づけるにはドメインレジストラのAレコードに書いてあげる必要がありますが、通常のドメインレジストラではAレコードのターゲットにいれられるのはIPアドレスのみで、文字を入力できません。
そこで登場するのがRoute 53というAmazonのサービスです。平たくいうとAmazonが提供するName Serverです。
このRoute53ではAレコードにELBのDomain nameを書くことが出来ます。
1.AWSサービス一覧からRoute53をクリックします。
2.左サイドバーからHOsted zonesをクリックし、表示された画面でCreate Hosted Zoneをクリックします。Domain Nameの入力を求められるので、入力し、TypeをPublic Hosted Zoneにします。
3.するとレコードが表示されます。デフォルトではNXとSOAレコードが入っています。ここでCreate Record Setを押下します。下記のような画面が右に表示されるので、AliasをYesにします。するとAlias TargetにACMで登録した証明書がでてくるので選択します。 これでサイトのドメイン名とELBがひもづきました。
4.ドメインレジストラ(例お名前ドットコム)にログインし、Name Serverを変更します。これによりお持ちのドメインにアクセスが来た時にAmazon Route53のName Serverを見るようになります。入れる値は先ほどデフォルトで入っていたNXレコードの値です。
例:
ns-175.awsdns-2.com.
ns-1521.awsdns-6.org.
ns-670.awsdns-13.net.
ns-1779.awsdns-31.co.uk.
4.この状態でELBのDomain nameをURLバーに入れてアクセスすると、サイトのドメインにリダイレクトされれば設定成功です。