AWSスーパー初心者向けの記事ですが、通常のレンタルサーバーはそれなりに触れる人向けの記事です。順番にやっていけばやれるレベルで書いていきますが(自分が再設定するときに分かるように)、枚数が多すぎてスクショ取る気力がありません…。
細かく言うとインスタンスの設定などは終わって、さぁSSL化しよう!と思って挫折した方向けです。
記事を書いてる途中でよくわからなくなってきたので、記事の構造がおかしくなってます。修正する前に見た方は頑張って読み解いてください。
abc.comを取得した時のサブドメイン(sub.abc.com)をAWSのACM(AWS Certificate Manager)でSSL証明書を発行する。←やりたいことを書いただけなのに無駄に長くなるな…。
今回はもともとエックスサーバーで運用していたWEBサービスの管理機能をAWS側に持たせるという事をするために結構手間な作業が発生した。
ムームードメインの設定
めんどくさくてネームサーバーをエックスサーバーに設定していたのを、ムームーDNSで分けます。設定は下記の通り。順番的にはAWS側で先に設定する項目もあるけどまとめて書いておきました。
サブドメイン 種別 内容 優先度
空白 A エックスサーバーのIP
www A エックスサーバーのIP
空白 MX エックスサーバーのサーバー名 10
sub NS aws発行のネームサーバー1
sub NS aws発行のネームサーバー2
sub NS aws発行のネームサーバー3
sub NS aws発行のネームサーバー4
_から始まる長い奴~.sub CNAME _から始まる長い奴.aws
Aレコードのエックスサーバーは、現行のWEBサーバーです。MXレコードも同様にメールサーバーがエックスサーバーのためこのような形に。優先度はこのサーバーしか使っていないので適当に10としています。
最終行のCNAMEのところはsub.abc.comなら、サブドメインのところは「_」~「.sub」まで。
内容は同じように「_」~「.aws」まで。どちらも最後のドットは入れません。
そして、ハマったのがACMでCNAMEの作成を行ったら、証明書の詳細ページでroute53でレコードを作成というのをやらなければならないというところ。これをやらないといくらムームードメインでCNAMEを作成してもACMのステータスが「検証を保留中」となって進みません。
逆にこれさえやってしまえば、他のブログで事足りるので詳細を書くまではそちらを見ていただいた方が安心です!
↓ここから順番通りの解説に入ります。
まずはドメインの登録
Route53→ホストゾーン→ホストゾーンの作成
ドメイン名→サブドメインを含むドメインを入力「例:sub.abc.com」
タイプはパブリックのまま作成
表示されている4つのネームサーバーをムームードメインに設定(入力例は上で解説している)→IPアドレスと紐づけるためにレコードを作成してAWSにAレコードを追加
値にはElasticIPをコピペして貼り付ける→通常のhttp接続ができるのでブラウザで確認する。
ロードバランサ―の設定
EC2→ロードバランシングのロードバランサ―から「ロードバランサ―の作成」をする。
種類はApplication Load Balancerを選択して作成
Basic Configuration
Load Balancer Name
適当に英数字で名前を付ける。仮にここでは「LB」として設定。
Scheme
Internet-facingを選択
IP address type
IPv4を選択
Network mapping
VPC
紐づけ対象のVPCを設定
Mappings
紐づけるアベイラビリティゾーンを選択するが、かならず2つ選択しないとダメ。
ap-northeast-1a
公開用のSubnetを選択する
ap-northeast-1c
公開用のサブネットを1つで運用する場合も必ず設定する必要がある。サブネットが1つの場合は、新たに公開用のサブネットを作成して設定する。ルートテーブルは同じものを使用するとできると思う。
Security groups
default
ロードバランサ―に対してHTTPSで接続する設定したい→デフォルトを設定変更するのが良い。
VPCのセキュリティ→セキュリティグループから、defaultのセキュリティーグループで同じものをクリック
右下のあたりに出てくる「インバウンドのルールを編集」をクリック
既存設定を削除して新たに「ルールを追加」→タイプをHTTPS、CIDERブロックを0.0.0.0/0を設定して「ルールを保存」
インバウンドルールが変わっていることを確認して先ほどの設定に戻る
Listeners and routing
ロードバランサ―から接続先のVPCに対して接続する設定
Protocol
ロードバランサ―までの接続方法
→HTTPS
Port
→443(自動入力)
DefaultAction
ターゲットを作成してあげる必要があるので、「Create target group」で作成する。
※作成方法を下で解説しているが、作成していればそのターゲットを選択することになる。
Basic configuration
Choose a target type
Instancesを選択
Target group name
分かりやすいグループ名をつける。ここでは「TG」とする。
Protocol Port
ロードバランサ―からEC2のインスタンスに接続するプロトコルなので、HTTP:80を選択。
※ロードバランサ―までをHTTPS、ロードバランサ―から先をHTTPとすることでセキュリティを強化している。
VPC
使用するVPCを選択
Protocol version
HTTP1
Health checks
Health check protocol
HTTP
Health check path
/ ←ルートディレクトリを指定するのが分かりやすい。ここのディレクトリにindex.htmlを置いておくことで、疎通テストが行われる仕様になっているので、必ずindex.htmlファイルを置いておこう!
Tagsは無視してNext
Available instances
画面が変わるので、使用するinstanceにチェックを入れて、右下の「Create target group」をクリック
Secure listener settings
クライアントとロードバランサ―感のセキュリティーポリシーを設定する。
Security policy
詳細が分かる人は他のでもよいと思うけど、分からない人はこちら→ELBSecurityPolicy-2016-08
Default SSL/TLS certificate
From ACM ドメイン名(例:sub.abc.com)
※下のACMの証明書のステータス「発行済み」ドメインのステータスが「成功」にならないと選択できない
Add-onとTagは飛ばしてOK→「Create load balancer」
「View load balancer」で内容を確認できる。
AWS Certificate Manager
「証明書をリクエスト」をクリック
証明書タイプ
パブリック証明書をリクエスト→次へ
ドメイン名
設定するドメイン名を入力「例:sub.abc.com」
検証方法を選択
DNS検証-推奨→「リクエスト」
画面遷移するので右上の「証明書を表示」をクリック
ドメイン
ドメインをムームードメインに設定する。
CNAME 名とCNAME 値を上の方で解説した通りに入力する。
入力が終わったら、AWSがわの画面でRoute 53でレコードを作成ボタンをクリック→レコードを作成
少し時間がたつと、保留中の検証が成功になる。
ロードバランサ―からインスタンスへのHTTP接続
EC2→インスタンス→設定するインスタンスID
セキュリティタブ→セキュリティグループをクリック
インバウンドのルールを編集
既存のHTTP接続(http 80 0.0.0.0/0)のルールを削除し、新たにHTTP接続のルールを追加する。
ソースは、ロードバランサ―のセキュリティを確認してそれを設定。
これで、インスタンスへはロードバランサ―からのみHTTP接続できるようになる。
ロードバランサ―とインスタンスの接続チェック
EC2→ロードバランシングのターゲットグループ
ターゲットグループをチェックして下に出てくるTarget groupのTargetsから「Register targets」をクリックする。
Available instances
画面が移動するので、使用するインスタンスにチェックを入れて「Include as pending below」をクリック
Targets
Health StatusがPendingになっているはずなので、右下の「Register pending targets」をクリック
画面が変わるので、設定したTarget groupにチェックを入れて
→Healthy statusがinitialからhealthyになれば完了。
unhealthyの場合は、先ほどのACMでindex.htmlファイルの問題などが考えられる。
ドメイン→ロードバランサ―への転送設定
Route53→ホストゾーン
作成したドメイン名を選択して「詳細を表示」をクリック
Aレコードのものにチェックして、レコードを編集をクリック
エイリアス
エイリアスをオンにして次のものを選択
トラフィックのルーティング先
→Application Load BalancerとClassic Load Balancerへのエイリアス
リージョンを選択
→アジアパシフィック(東京)
※もちろん違う箇所でやる場合は別のやつ
ロードバランサ―を選択
ロードバランサ―のDNSを選択。通常は1つしか出ないのでそれを選択。
入力が終わったら保存ボタンを押して終了
→Aレコードのルーティング先がIPアドレスからロードバランサ―のDNSに変更されていることを確認。
おわり
あとはhttpsでアクセスしてやれば終わるんだけど、リダイレクト処理をしてやる必要があると思うのでApache(htaccess)かnginx(conf)の使用にのっとって修正してください。気力があれば続き書きます。
ロードバランサ―のリスナーにHTTP 0.0.0.0/0を追加してやらないとリダイレクトできないかも。