AWS EC2 WordPressのhttps化がうまくいかなかった

IT技術

AWS無料枠を使って当ページを作っています。

人の真似でサクッと出来上がると思ったのですが、https化で苦労しました。

結果から伝えると、なんてことないセキュリティグループの開放漏れでしたが、こんなとこで躓くやつがいるんだな!という感じで記事にします。

ちなみに、インストール・ELB・証明書などのhttps化までの設定は真似事で完了しましたので、そこは割愛します。

原因

EC2の初期使用の段階で、default というセキュリティグループ名が登録されています。

今回、ELBを作った際にセキュリティグループを適用するのですが、defaultを適用してしまったのが、駄目だったようです。

駄目というか、defaultはインバウンドルールは全拒否で、アウトバウンドルールは全許可という設定だったため、外部からのアクセスがインバウンドルールによって拒否されていることが原因でした。

試したこと

DNS周りを調べる

とりあえず名前解決できるか確認。

ドメインはお名前ドットコムで取得しているので、DNSをAWSへ振っています。

以下nslookupのサイトを使って、正引き逆引きできるかチェックしました。

nslookup(dig)テスト【DNSサーバ接続確認】
サーバー管理者用の支援ページです。nslookupやdigを利用し管理中のDNSサーバーが外部から取得可能か確認できます。DNSの応答や問い合わせ結果を確認することができます。

ドメインを入力します。

すると結果がでます。

普通にバレますがIPはマスクします。

結果は、ちゃんとAWSのDNSからIPアドレスが伝搬されていることが確認できました。

IPアドレス直打ちで試す

ブラウザでIPアドレス直打ちします。

結果は、タイムアウト。

※エンジニアなら、ここで原因に気付けって話ですが、端くれは気づけません。

Route53のAレコードをElasticIPに戻す

ELBに向けていたAレコードをElasticIPに戻します。

ElasticIPにhttpアクセスしたところ、正常に当サイト表示された。

再びELBに書き換えると、やっぱり繋がらない。

ELBを作り直す

ELBを一旦削除して作り直しましたが、もちろん変わらず。

リスナーを作り直す

リスナーで、httpとhttpsを登録してますので、ここだ!っと意気込んで見るも無惨に分からず、なので削除して作り直すも変わらず。

セキュリティグループを見直す

真似事だとこうなることはわかっていました。

悩んだすえ、やっとセキュリティ周り?と気づく。

使っているものでセキュリティと言えば、リスナーかセキュリティグループと当たりをつけ、AWSの公式サイトを見に行きます。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/default-security-group.html

セキュリティグループのデフォルトルールは以下であるらしい。

実際の設定がこちら

全許可で問題ないなさそうだが、送信元がアウトバウンドは0.0.0.0でインバウンドのsgってなってるな。

普通に考えれば、sgを送信元とするものだけ許可されてるってことなので、セキュリティグループ内の送信元に制限されてるってことになる。

確認のため、WordPress Certified by Bitnami and Automatticをインストール時に作られたセキュリティグループをクリックしてみると、httpとhttpsが0.0.0.0で許可されてるようです。

これか。

解決策

セキュリティグループ作る

セキュリティグループを作成する。

インバウンドアウトバウンド共に0.0.0.0を送信元オールANYのグループを作る。

ELBのセキュリティグループを新規グループに再適用。

解決

無事アクセスできるようになりました!

この件の解決まで3日ほど掛かりました。

こういうことが起きるから、事前調べは必要ということはわかるが、なにぶんめんどくさいので、今後も真似事を増やしていく予定。

コメント

タイトルとURLをコピーしました