Route 53で管理するドメインの登録
Route53で新規取得したドメインはRoute53管理画面⇒Hosted zonesに表示される。
他のレジストラで取得したドメインをRoute53で管理したい場合は、「Created Hosted Zone」をクリックして登録する。
AWSでSSL使うための構成
構成1:EC2インスタンスに証明書をインストールする。
Apacheに秘密鍵と証明書をインストールする。
AWS以外でも使われる一般的な方法。
構成2:ELBを使う(S3のWeb site hostingの場合はCloudFront)
ブラウザ⇔ELBはHTTPS、ELB⇔EC2はHTTP通信となる。
秘密鍵と証明書は ELBにインストールする。
EC2の設定変更は必要ないので、こちらの方がオススメ。
デメリットはELBの費用がかかる点。
なお、S3のWeb site hostingはこちらの方法でしかSSLにすることができない。 (S3に証明書をインストールすることはできないため)
AWS Certificate ManagerでのSSL証明書作成手順
- AWS Certificate Manager管理画面を開く
- 「証明書のプロビジョニング」をクリック
- リージョンを選択
ELBの場合:リージョンはELBと同じリージョンを選択する。 CloudFrontの場合:米国東部リージョンを選択しなければならない。 - 「パブリック証明書のリクエスト」をクリック
- 「証明書のリクエスト」をクリック
- ドメイン名を入力
- 検証方法を選択
「DNSの検証」の方が簡単。CNAMEレコードを追加する必要があるが、Route53を使っている場合は勝手に設定してくれる - 「確定とリクエスト」をクリック
- 検証画面が表示される。Route53を使っている場合は「Route53でのレコード作成」が表示されるのでクリック
- 「作成」をクリック
ELBの作成手順
- EC2管理画面を開く
- 「ロードバランサー」をクリック
- 「ロードバランサーの作成」をクリック
- ALBを選択
ALB:HTTP、HTTPS用のロードバランサー - スキーム:インターネット向け、プロトコル:HTTPS、AZ:振り分けたいEC2が配置してあるサブネットをすべてチェック
- 証明書:AWS Certificate Managerから証明書を選択する
- セキュリティポリシーの選択:デフォルト(ELBSecurityPolicy-2016-08)のまま
- セキュリティグループ:「新しいセキュリティグループを作成する」を選択すると、ポート443が自動的に設定される
- ルーティングの設定:新しいターゲットグループ、ターゲットの種類:インスタンス、プロトコル:HTTP(※ELB⇔EC2間はHTTPなので注意)、ポート:80
- ターゲットの登録:EC2インスタンスを選択し「追加」をクリック
DNS参照先をELBに向けるための手順
- Route53管理画面を開く
- 「Hosted zones」でドメインを選択
- AレコードのAliasをYESにし、ロードバランサーを選択
※Route53以外のDNSサーバの場合は、CNAMEでELBのエントリポイントをセットする
CloudFrontを作成し、S3バケットへHTTPSアクセスできるようにする手順
- CloudFront管理画面を開く
- 「Create Distribution」をクリック
- 「WEBのGetStarted」をクリック
- 以下の内容を入力
- StatusがIn ProgressからDeployedになるまで待つ
- WebディストリビューションのIDをクリックすると「Domain Name」に、「[ID].cloudfront.net」と表示される。 このドメインにアクセスすると、CloudFrontを経由して、オリジン(サイト)へアクセスできるようになる。
[Origin Settings]
- Origin Domain Name:S3バケットを選択
※S3には制御用のURLとWebアクセス用URLがある。エラーになる場合は、S3のStatic website hostingのエンドポイントを確認しよう - Origin Path:特定のパスのみ配信する場合は入力
- Origin ID:Origin Domain NameとOrigin Pathから自動生成される
- Restrict Bucket Access:CloudFront以外はバケットにアクセスさせない場合はYESを選択
- Origin Custom Headers:CloudFront⇒S3へのリクエストに追加したいHTTPヘッダがある場合は入力
[Default Cache Behavior Settings]
キャッシュの設定だが、通常はデフォルトのままで問題ない
[Distribution Settings]
- Price Class:キャッシュサーバの配置場所。広いほど費用がかかる。
- AWS WAF Web ACL:Webアプリ向けのファイアウォールを有効にするかどうか。
Web Application Firewall:アプリケーションレベルで通信の中身を解析し、特定の攻撃パターン(シグネチャ)に一致する通信を検知・遮断する 月額でルール数+5ドルかかる。ルールが5個だったら10ドル。 - Alternate Domain Names(CNAMEs):ドメイン名を入力する。
- SSL Certificate:Custom SSL Certificate(example.com)を選択し、あらかじめ作成しておいた証明書を選択。
- Custom SSL Client Support:Only Clients that Support Server Name Indecation(SNI)を選択する。
SNIに対応していないブラウザではアクセスできないが、IE6以前やOpera7以前などごく一部なので問題ない。ALL Clientsにすると月600ドルかかる。 - Security Policy:推奨のTLSv1.1_2016を選択。
- Supported HTTP Versions:デフォルトの「HTTP/2, HTTP/1.1, HTTP/1.0」のまま。
- Default Root Object:アクセスしたときに見せたいパスを指定する。通常は空欄のまま。
- Logging、Bucket for Logs、Cookie Logging:ログ保存設定。Onにすると容量に応じた費用がかかる。
- Enable IPv6:デフォルトのEnableのままでOK。
- Comment:空欄でOK。
- Distribution State:配信を有効にするかどうか。あとで有効にする場合はDisabledにしておく。
DNS参照先をCloudFrontに向けるための手順
- Route53管理画面を開く
- Hosted zonesでドメインを選択
- AレコードのAliasをYESにし、作成したCloudFrontのDestributionを選択する