EC2内部にファイル保存しているSSL証明書から、AWSのマネージドSSL証明書ACMに移行する手順です。ACMはEC2に直接つけられないため、EC2の前段にALBをかませる必要があります。
ACM証明書を作成する
- AWS Certificate Managerを開く(ALBを作成するリージョンを選択する)
- 証明書のリクエスト ->
hoge.example.com
、「別の名前を追加」から*.hoge.example.com
を入力する。
ALBを作成するサブネットを作成する(存在しなければ)
- ALBは2つ以上のAZに配置する必要があるので、ここではAZ-AとAZ-Cに一つずつ作成する
- ルーティングにInternet Gatewayへの経路を入れる
ALBにつけるセキュリティグループを作成する
- グローバルからのHTTPS(443)アクセスを許可する
ALBを作成する
- EC2 -> ロードバランサー -> ロードバランサーの作成 -> Application Load Balancerを選択
ロードバランサーの設定
基本的な設定
- 名前:任意
- スキーマ:インターネット向け
- IPアドレスタイプ:ipv4
リスナー
- ロードバランサーのプロトコル:HTTPS
- ロードバランサーのポート:443
アベイラビリティーゾーン
先ほど作成したALB用のサブネットをAZ-AとAZ-Cそれぞれ選択
セキュリティ設定の構成
- 「ACM から証明書を選択する」-> 作成したACMを選択
セキュリティグループの設定
- 作成したセキュリティグループを選択
ルーティングの設定
- ターゲットグループを設定
- ターゲットグループ: 新しいターゲットグループ
- 名前: 任意の名前(Webとか)
- プロトコル:HTTP
- ポート:80
- ターゲットの種類:instance
- ヘルスチェック
- プロトコル:HTTP
- パス:
/
など、200レスポンスが返るところを指定
ターゲットの登録
- ALB配下に入れるインスタンスを選択 ->登録済みに追加
EC2のセキュリティグループに設定を追加する
ALBからEC2に対してアクセスができるように、EC2のセキュリティグループにALBのセキュリティグループIDからのHTTPアクセス許可を追加
- タイプ: HTTP
- プロトコル: TCP
- ポート範囲: 80
- ソース:
<ALBのセキュリティグループID>
確認
- ALBに生成されたDNS名にブラウザからアクセスしてみる。
- 証明書のドメインとALBのドメインが異なるので、ブラウザに「保護されていない通信」と出る。
Route53の設定
- 設定するドメインのHosted Zoneを選択
- 設定するドメイン(or サブドメイン)のRecord Setがすでに存在する場合はそれを選択する。ない場合は作成する。
- Type: A
- Alias: Yes
- Alias Target: 作成したALB(プルダウンメニューから選択できる)
-
dualstack.xxxxxxxxx.ap-northeast-1.elb.amazonaws.com
みたいな感じの表示になる
-
確認
- 設定したドメインに対してHTTPSでアクセスしてみる。
- ブラウザURLバーの「保護された通信」から証明書を確認してAmazonの証明書になっていることを確認する。