3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HTTPS通信でアクセス可能にする

Last updated at Posted at 2021-06-23

内容

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
前回の記事「独自ドメインを設定する/障害時はSORRYページへ通信を流す」の続きです。

前回の記事

https://qiita.com/zakinicof/items/6c973c1aed9ebdeeb845
前回までの構成はブログサービスにアクセスするのにHTTPで通信をしていました。
このままではセキュリティに問題があるため、よりセキュアなHTTPSで通信できるように設定を変更していきます。
HTTPS通信をするために必要な証明書をAWS Certificate ManagerというAWSで証明書を管理できるサービスを利用します。
AWS Certificate Managerで証明書を発行してELBにアタッチすることでHTTPS通信を可能にしていきます。
その他、ELBのセキュリティグループでHTTPS通信を許可する設定の追加なども行なっていきます。
スクリーンショット 2021-06-23 15.25.25.png

実施手順

前回の記事の構成がされていることを前提で進めていきます。

準備

  1. EC2インスタンスが2台立ち上がっていることを確認
  2. RDSを削除した場合は、スナップショットから復元しておく。
  3. 復元したデータベースのステータスが利用可能になるまで待つ。
  4. 前回取得したドメインでブログが閲覧できることを確認しておく。

ロードバランサーでHTTPS通信を受け付ける

  1. EC2の画面に移動し、左のメニューからロードバランサーを選択
  2. リスナータブを選択し、リスナーの追加を選択
  3. プロトコル:HTTPSを選択
  4. アクションの追加転送先と進み、ターゲットグループを選択し、チェックボタンを選択
  5. 新しいACM証明書をリクエストを選択
  6. 証明書のリクエスト画面でドメイン名を入力して次へ進む。
  7. 検証方法の選択:DNS の検証を選択して次へ
  8. 確認とリクエストを選択
  9. Route53でのレコードの作成を選択
  10. 作成を選択
  11. 続行を選択
  12. Route53の画面に移り、更新ボタンを選択、検証用のDNSレコードが追加されていることを確認する。
  13. リスナーの追加画面に戻り、デフォルトのSSL証明書の項目で更新ボタンを選択し、先ほど作成した証明書を選択
  14. 右上のリスナーの追加を選択

セキュリティグループの設定

  1. ロードバランサーの画面の詳細タブを選択し、セキュリティグループを選択
  2. ロードバランサー用に作成したセキュリティグループを選択し、インバウンドルールを編集を選択
  3. ルールの追加を選択
  4. タイプ:HTTPSを選択
  5. ソース:0.0.0.0/0を選択
  6. ルールを保存を選択
現在の状態でURLをhttpからhttpsに変更してアクセスすると、WordPressの仕様で表示が崩れてしまうため、EC2にコードを追加することで対応します。

WordPressの対応

  1. ターミナルを開き、SSH接続でEC2にログインする。接続したら権限をルート権限に変更しておく。
  2. cd /var/www/html/でディレクトリを移動
  3. llwp-config.phpのファイルがあることを確認
  4. vi wp-config.phpでファイルを開く。
  5. 編集が必要なのはここまでです!という記述が出てくるまで下にスクロールする。
  6. 上記の記述とdefine( 'WP_DEBUG', false );の間に下記のコードを記述する。記述したら保存する。
if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $_SERVER['HTTPS'] = 'on';
  $_ENV['HTTPS'] = 'on';
}

同様の手順をもう1台のインスタンスでも実行します。
この後、再度httpsでアクセスすると通常通り表示されるはずですが、この段階でまだ表示が崩れている場合は下記の手順を行います。

  1. ターミナルを開き、SSH接続でEC2にログインする。
  2. mysql -h RDSのエンドポイント名 -u ユーザー名 -pでMySQLにログイン
  3. USE データベース名
  4. SELECT * FROM wp_options WHERE option_name IN ('siteurl', 'home');コマンドを実行すると、ELBのDNS名になっていることが確認できます。これを、https://[独自ドメイン名]に変更します。
  5. UPDATE wp_options SET option_value = 'https://[独自ドメイン名]' WHERE option_name IN ('siteurl', 'home'); を実行
  6. 再度、SELECT * FROM wp_options WHERE option_name IN ('siteurl', 'home');コマンドを実行し、URLが更新されていることを確認
  7. ブログにhttps://[独自ドメイン名]でアクセスし、正常にブログが表示されていることを確認する。
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?