この記事を書いている私について
インフラ系PMO歴半年でAWSクラウドプラクティショナーを取ったばかりの私が
AWS CloudTechという動画学習サービスに参加し、AWSエンジニアを目指すための備忘録です
構築→記事作成→指摘反映の中で間違いがあったら業務でも発生するので、これからも気を引き締めて行きたいと思います。
本記事の目標
前回の「独自ドメインの設定/障害時にSORRYページへ通信を流す」に引き続き、
今回はAWS Certificate ManagerをセキュアなHTTPSで通信できるように設定を変更していきます。
前回の記事ではブログサービスにアクセスするのにHTTPで通信をしており、
このままではセキュリティに問題があります。
本記事ではAWS Certificate Managerで証明書を発行してELBにアタッチすることでHTTPS通信を可能にし、
ELBのセキュリティグループでHTTPS通信を許可する設定の追加なども行なっていきます。
今回の構成図
※構成図の作成にcloudcraftを利用しています。
構築の流れ
以下の流れで構築を進めます。
・前回の環境を再構築
・ロードバランサーでHTTPS通信を受けるよう設定
・ELBのセキュリティグループでHTTPS通信を許可
・WordPressの対応
・HTTPS通信が出来るか確認
・HTTP通信の許可設定を削除
・前回の環境を再構築
・EC2インスタンスが2台立ち上がっていることを確認する。
・RDSを削除した場合はスナップショットから復元する。
・ALBを削除した場合は作成する。
・S3を削除した場合は作成する。
・前回取得したドメインでブログが閲覧できること確認する。
*余談ですが、前回までの復習になるので再構築はとても勉強になります。
素早くミスなく構築したいので、近いうちにqwiklabsを使って反復練習をしてみたいと思います。
年内にはqwiklabsを使った社内勉強会を開きたいですね。
・ロードバランサーでHTTPS通信を受けるよう設定
リスナーを追加
※リスナーとは通信を受付けるポートの許可設定のことになります。
転送先に作成したターゲットグループを選択し、ACM証明書を発行します。
完了すると、Route53のCNAMEに検証用のレコードが追加されます。
・ALBのセキュリティグループでHTTPS通信を許可
インバウンドルールで、全てのIP(0.0.0.0/0)からのHTTPS通信を許可します。
※私の体感ですが、証明書が発行されるまで数分時間がかかります
・WordPressの対応
この時、HTTPS通信を許可することでWordPressの仕様により、ブログの表示が崩れます。
その為、2台のEC2インスタンスに下記の設定ファイル(wp-config.php)にコードを追加することで対応します。
if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
}
この段階でまだ表示が崩れている場合はEC2インスタンスにログインして下記のコマンドを実行します。
UPDATE wp_options SET option_value = 'https://[独自ドメイン名]' WHERE option_name IN ('siteurl', 'home');
※独自ドメイン名]はご自身で取得したドメインになります。
上記のコマンドによりRDSのDBに保存されているURLを更新することで正常にブログを表示することが出来ます。
・HTTPS通信が出来るか確認
ブログのURLに鍵マークがついていることで確認します。
・HTTP通信の許可設定を削除
HTTP通信を許可した状態だとセキュリティ上の問題があるためELBのセキュリティグループ・リスナーにて、HTTP通信の許可設定を削除します。
これにて課題は終了です。
サービス停止
次のハンズオンでも今回の設定を使いますので、サービス停止は行わず一気に次のハンズオンもやってしまうことをお勧めします。
一旦学習を止められる場合は下記のサービスを停止しておきましょう。
■EC2(オンデマンド)→時間単位または秒単位で計算されるため停止中にすること。
■RDS(オンデマンド)→RDS の使用料は秒ごとに課金されるため、スナップショットを取って削除すること。
■ALB→実行時間に対して時間単位、または1時間未満で使用料を課金されるため、削除すること。
■S3→保存したオブジェクトのサイズ、保存した期間の長さによって課金されるため、削除すること。
ハンズオン5に発生する費用一覧
・EC2 x 2
・RDS x 1
・ALB x 1
・Route 53 x 1
・S3 x 1
1時間に13円ほど費用が発生します。
最後に
AWS Certificate Managerで証明書を発行してHTTPS通信を行う方法を学びました。
当たり前のようにHTTPSを使って色んなサイトを見ていますが、自分で発行すると
普段見ているサイトがHTTPSになっているか気になってきますね→私だけ?(笑)
AWS CloudTechの課題としてこれらが残っていますので、
やったことを今後のQiita記事にして発信していきたいと思います。
これから始められる方の参考になれば嬉しいです。
今後の学習予定↓↓↓
・キャッシュサーバーの配置
・CloudFormationの作成、更新
・Lamda関数
・Docker
内容に不備がございましたら、ご指摘いただけますと幸いです。
今後の励みになりますので、良ければ「LGTM」をお願いします。
閲覧ありがとうございました。
この記事はAWS初学者を導く体系的な動画学習サービス「AWS CloudTech」のハンズオンを基に作成しました。