どうも!なまこです!
本ブログはAWSでWebサーバーを構築し、WordPressをインストール、ブログを運用しています。
その際、HTTPS接続の時にセキュリティグループで困った話を共有化したいと思います。
ロードバランサーについては過去の記事でも書きましたが、Webサーバーの冗長化でも必要となってくる知識です。
Route53とドメインについて
WebサイトへのアクセスにはIPアドレスが必要となるが、Elastic IPでIPアドレスを固定して、Route 53を通じてIPアドレス**.**.**.**は”ドメイン名”やで〜としてくれます。
こうすることでIPアドレスではなく、馴染みのあるドメインでWebサイトにアクセスができます。
HTTPS接続へ
AWS Certificate ManagerでSSL証明書を獲得していきます。
ちなみにAWS Certificate Managerを使えばSSL証明書は無料で手に入れることができます。
ただしELBに使うこと限定で、そのELBがお金かかるのですけどね。。。
ともあれSSL証明書を入手したことで念願のHTTPS接続ができる!と思っていました。
が
できたのはできたのだがhttp+IPアドレスが依然としてできてしまう。。。

本ブログはゼロからわかるAmazon Web Services超入門 はじめてのクラウドを見ながら作成を行いました。
本にもコラムで「EC2インスタンスに直接接続できないようにセキュリティグループを変更しようね」とちょこっと書いてあるくらいで具体的な手法は載っておらず😅
ネットを駆使して何とか解決方法に至りました。
セキュリティグループの設定
本解決はロードバランサーとEC2のセキュリティグループのインバウンドとアウトバウンドを編集することで解決できました。
以下の手順でセキュリティグループの設定をなおしていきます。
まずはロードバランサーのセキュリティグループの設定。
インバウンド

これはOKかなと思います。
続いてアウトバウンド

タイプをHTTP、送信先をカスタムにしてEC2のセキュリティグループのグループIDにします。
続いてEC2のセキュリティグループの設定。
インバウンド

ソースをカスタムにしてロードバランサーのグループIDを設定します。
SSH接続は引き続きできるようにしておきます。
アウトバウンドの方はこれまで通り、すべてのトラフィックでOKです。
これで思い描いていた以下のような構成にすることができました。

2021年2月4日追記
セキュリティグループの設定方法について問い合わせていた出版社から返信がありました。
前段にELBを設置するならパブリックIPでなく、プライベートIPで運用すればセキュリティグループはいらないよとのことでした。
なるほどー😅その手がありましたか。
まとめ
- HTTPS通信の際はロードバランサーのセキュリティグループのアウトバウンドとEC2のセキュリティグループのインバウンドをそれぞれ指定しましょう。
- Webサーバー1台でもHTTPS接続させるためにはELBが必要です。
- AWSならSSL証明書は無料。ただしELBは有料。
ELBは有料ですがAWSの一年間無料枠の対象です。これを機にぜひ試してみてください。