HTTPS通信
HTTPと比べてHTTPSは通信が暗号化されており、第三者によって通信の中身を見ようとしても見れず、セキュリティ対策となり個人情報が守られます。
他にも、ページの表示速度が速くなるといったメリットもあります。
準備
・EC2,RDSが起動していること
・前回のハンズオンで作成したブログがドメイン名で正常にアクセスできること
AWS Certificate Manager(ACM)とは
https通信をするのに証明書が必要だが、このサービスは証明書を管理できるサービス
AWSで無料の証明書を作成して、ELBにアタッチをすることでクライアントはhttps通信が可能となります。
利用する際は、
・通信を受け付ける設定でhttpsを追加、
・ELBのセキュリティグループでhttps通信を許可する設定が必要です
ロードバランサーでリスナーを追加
リスナー・・・通信を受け付けるポートの許可設定のこと
EC2< ロードバランシング< ロードバランサー< タブにあるリスナーからリスナーを追加を選択
プロトコル:ポートに
HTTPSを選択
転送先にターゲットグループ(TG-1)を選択
新しいACM証明書をリクエストを選択
ドメイン名の追加フォームでドメイン名にblog.aws-demo.gaを入力して次へを選択
検証方法の選択とは、証明書を発行するにあたって、本人確認のようなものが必要で方法が2種類あります
1, DNSの検証 (←今回はこちらを選択)
2, Eメールの検証
タグの追加では証明書のタグを作成できます。
確認画面の後、確定とリクエストを選択
検証方法はRoute53でのレコードの作成というところでCNAMEのDNSレコードを作成したRoute53のポストゾーンに追加する
検証状態が準備完了となればOK
ボタンで自動的にレコードが作成されて追加される
Route53の画面に切り替え、更新してみると
今回検証用のDNSレコードが自動的に追加されていることが確認できます。
ELBのリスナー追加フォーム画面に戻り、デフォルトのSSL証明書に、先ほど作成したACMが選択項目にあがる
保存を選択して成功ELBはHTTPS通信を受け付けられるようになります。
セキュリティグループの設定
現状HTTP通信しか受け付けられないので設定を変更します
EC2< ネットワーク&セキュリティ< セキュリティグループを開く
ロードバランサー用に作成したセキュリティグループを選択後、インバウンドルールを編集を選択します
インバウンドルール< ルールを追加を選択
タイプ< プロトコルの選択フォームでHTTPSを選択、
ソース元(通信してくる元)は0.0.0.0/0(全て)でルールを保存を選択
以上でHTTPS通信の設定は完了
補足1: httpsでwordpressを閲覧する
wordpressの表示の仕様により表示が崩れます。(注: wordpressの詳しいことは分かりません)
# EC2にsshで接続します
ssh -i キーペアファイル名 ec2-user@パブリックIPアドレス
# 接続したら今回は権限をroot権限に切り替えておきます
sudo su -
# ディレクトリ移動 & 内部確認
cd /var/www/html/
ll
# viコマンドでwp-config.phpを編集
vi wp-config.php
...
if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
}
/* ↑にコードを貼り付ける */
/* 編集が必要なのはここまでですと書かれた行があります ~~ */
この作業を別に稼働しているEC2にもログインしてコードの貼り付けを行います。
補足2: セキュリティ面向上
動作確認の都合上同時に行わなかったが、
このままだとロードバランサーがHTTP通信を受け付ける状態なので設定を削除していきます
EC2< セキュリティグループ< インバウンドルールを編集を選択
HTTP通信を削除し、ルールを保存します。
続いてリスナーの設定
ロードバランサーの画面< リスナー
HTTPの方を選択し、削除を行う
以上で完了
参考・注意
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
このハンズオンでは料金が約10〜11円/時間かかります。