AWSのサブネットにwordpressのデータを置いて保護して、本体のパブリックネットにおいたwordpressをSSL認証つまりhttps://で動かす、という①AWS、②wordpress、③SSL認証、これが思ったより厄介でした。
その原因は、ひとつに、①AWSと②SSL認証をAWSの特徴(特長)を活かして、ELB(ロードバランサー)を使って行うと、他のサーバーで行われる認証キーパスの管理ファィル書き込み型とは異なる管理状態のために、wordpressでもそれを意識した中止が必要なこと、
いまひとつとして、wordpressは実は、SSL認証には完全に対応明日物ではなく、そのためのプラグインが必要なこと。
そして、この両者のために、管理のダッシュボードが、「リダイレクト過多」や「アクセス権限なし」のトラブルでアクセス不能になってしまうことです。
対策
1. wordpressのインストールはSSL設定以前
2. http://ドメイン名/wp-admin/で管理のダッシュボートを開き、そのままにしておくこと
3. プラグイン
を組み込み、wordpressをSSL課する準備をとておくこと。
4. ダッシュボートから「設定」→「SSLとセキュリティ」でreal simple SSLを開くこと
これにより、SSL課に必要で、まだ行われていないことのリストが出てきます。
詳しくは、AWSでWordPressサイトを構築してSSL化する方法【EC2 ELB ACM Route53】 #Linux – Qiita を
5. SSL認証の取得
6. ELBを使ってSSL認証の組み込み
ここで、注意しなければならないのは、ロードバランサーのリスナーに追加するHTTPS用(443ポート)のターゲットグルーブは、HTTP(ポート80用)に準備されたターケットグループにしておく必要があるということです。
7. apacheなどの設定ファイルや.htaccessでやる必要のないこと
一般のSSL認証では、設定ファイルにhttp:からhttps;へのリダイレクト設定が手順としてでてきますが、ここではやってはいけません。理由は2つ、ELBの設定自体が、https://にきたものをhttp://に結びつけているので、これと他のリダイレクトが合わされは無限リダイレクトになってしまいます。またリダイレクトしてしまうと、wordpressのhttp://で開いている管理画面に届かなくなってしまいのす。
8. wp-config.phpの書き換え
- :
wp-config.php
ファイルに、以下のコードを追加して、サーバーがHTTPSで動作していることを明示的に伝えます。phpif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
-
- p-config.phpファイルで強制的にHTTPSを使用させる場合、次のコードを追加します。
php
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
- p-config.phpファイルで強制的にHTTPSを使用させる場合、次のコードを追加します。
yourdomein.com はあなたのドメイン名です。AWS以外のサーバーの場合と違い、ここは必ずドメイン名を使用します。ELBを使用している場合はIPアドレスは変化しますので、たとえ表向き固定していても駄目です。
9. これでダッシュボードのreally simple SSLを見ると、「SSLで稼働」のぽたんが青くなっていると思われます。
まだ、黄色い作業のこしがあっても、ここでボタンをクリックすると https://yordomaim.com/wp-admin/からダッシュボードが操作できます なぉ、このポタンでwordpressをSSL化させる以前には、wordpressの.cssやるまとなど各所にのこっている http://の記述が、複合サイトになるために、wordpressがきちんと表示されない状態になっています。 以上、作業記憶をもとに記載しました手が。飛ばしているところがあるかもしれないので、うまくイカなかったらかきこみください。