現在、個人アプリを製作しており、
AWSの本番環境へのデプロイ及びDNS設定まで完了したので、今日はSSL化を行った。
全てAWS内で完結している為、作業はとてもシンプルだが、説明を省略している記事が多く少し迷う部分があったので、記録として残しておく。
前提
・EC2インスタンスでサーバー構築している
・Route53を使ってDNS設定をしている(ドメイン設定済み)
・ELB(ALB)を使用するので、その分の費用が発生する(を許容出来る)
・VPC構成はデフォルトのものを使用する
・とにかくサクッとSSL化したい人向け
ざっくり手順
- AWS Certificate ManagerでSSL証明書を取得する
- ELB(ALB)を設定する
- EC2のセキュリティグループ設定を確認する
- 接続確認
1. AWS Certificate ManagerでSSL証明書を取得する
まずはSSL証明書を取得します。
AWSコンソールでCertificate Manager
の画面に遷移します。
デフォルトでパブリック証明書のリクエスト
にチェックが入っています。
そのまま証明書のリクエスト
へ進みます。
設定したいドメインを入力し、次へ進みます。
Route53でDNS設定している前提なので、
検証方法はDNSの検証
を選択した状態で次へ進みます。
必要に応じてタグを設定しましょう。
確定とリクエストを押します。
検証状態が検証保留中から成功に変わるまで待ちます。
正常に手続き出来ていれば、1分程度で直ぐに成功に変わると思います。成功になったら続行をクリック。
Certificate Managerの管理画面に遷移してきました。
赤枠のドメインあたりをクリックします。
手動でRoute53にレコードを作成する事も出来るのですが、
ここから簡単にRoute53と連携させる事が出来ます。Route53でのレコードの作成をクリックします。
Route53のCNAMEレコードに登録が確認出来たら、SSL証明書取得のプロセスは完了です。
2. ELB(ALB)を設定する
続いて、ELBの設定を行います。
今回の構成としてはインターネットからのトラフィックをELBでHTTPS(443)で受け、
EC2にHTTP(80)で通信します。
EC2のコンソールからロードバランサーを開き、Application Load Balancerを選択します。
まず、基本的な設定でロードバランサーの名前を設定します。
今回の構成ではスキームはインターネット向けのままでOKです。リスナーはインターネットからALBまではHTTPS(443)になるので、HTTPS(セキュアHTTP)を選択します。
ALBを設置するVPC、サブネットを選択します。
ここではVPCについての説明は省きますが、インターネットと通信するので、プライベートではなく、パブリックサブネットを選択するようにして下さい。
続いて、セキュリティ設定です。
証明書タイプをACMから証明書を選択する
を選びます。
証明書の名前で先ほど発行した証明書を選択しましょう。セキュリティポリシーはELBSecurityPolicy-2016-08
のままでOKです。
セキュリティグループの設定です。
既に設定済みのものをアタッチしても良いですが、なければここで設定しましょう。
HTTPSのインバウンドを許可するように出来ていればOKです。
ターゲットグループを設定します。
こちらも事前に用意しているものをアタッチするのでも大丈夫です。
適用に名前をつけて、ターゲットの種類はインスタンス
、プロトコルはHTTP
、ポートは80
でいきます。ヘルスチェックはHTTP
で。
ターゲットとして登録するインスタンスにチェックを入れて、登録済みに追加
します。
確認画面に遷移するので、作成を押せば完了です。elbタブに遷移しましょう。
作成したALBのDNS名(Aレコード)をコピーします。
少し分かり辛くて申し訳無いです。
最後にRoute53のホストしているドメインのAレコードにコピーした値を入れます(赤枠のあたり)。お疲れ様でした。
3. EC2のセキュリティグループ設定を確認する
もうほぼ対応としては完了ですが、念のため、EC2にアタッチしているセキュリティグループで、HTTP(80)のインバウンドトラフィックが許可されているかを確認しておきましょ。
4. 接続確認
ALBがターゲットグループ(今回で言うとEC2インスタンスに対して)に
ヘルスチェックを行った結果を確認する事が出来ます。EC2メニューのターゲットグループから設定したものを選択します。healthy
となっていれば正常です。
ブラウザ(画像はchromeです)でアクセスして見ると、
SSLの鍵マークがついていますね〜、無事にSSL化する事が出来ました。お疲れ様でした。
参考にさせて頂いた記事
・AWSでWebサイトをHTTPS化 その1:ELB(+ACM発行証明書)→EC2編
・ALB-EC2構成のhttps接続を構築
・AWS Certificate Managerを使って無料でSSL証明書を発行する