• WordPressの管理画面をSSLへ切り替えるにはFORCE_SSL_ADMINを設定する

WordPressの管理画面をSSLへ切り替えるにはFORCE_SSL_ADMINを設定する

公開日: 執筆:佐藤

WordPressのログイン画面と管理画面をSSLへ切り替えるには、先にサーバーでHTTPS通信を使える状態にし、その後でwp-config.phpへFORCE_SSL_ADMINを設定します。この定数はSSL証明書を設置する機能ではありません。準備できていないサイトで先に有効にすると、管理画面へ入れなくなるおそれがあります。

設定後は、HTTPでログイン画面や管理画面を開いた場合にHTTPSへ転送されること、ログイン後の管理画面がHTTPSのまま移動できることを確認します。公開ページ全体をHTTPSへ切り替える作業とは分けて考えます。

FORCE_SSL_ADMINを設定する前にHTTPSでログイン画面を開く

最初に、設定を変えず、次の形式でログイン画面を直接開きます。ドメイン名は対象サイトのものへ置き換えます。

https://example.com/wp-login.php

ブラウザーが証明書の警告を出さず、対象サイトのログイン画面を表示できることを確認します。証明書のドメイン名が合わない、HTTPS用の仮想ホストが別のサイトを表示する、管理画面の画像やスクリプトを読み込めないという状態なら、WordPressの定数より先にサーバー側を直します。

WordPressのSSL管理画面に関する説明でも、SSLとHTTPS用ホストをサーバーへ設定してから定数を有効にするよう案内しています。定数の追加と、証明書やサーバーの設定は別の作業です。

wp-config.phpへFORCE_SSL_ADMINを一度だけ定義する

現在のwp-config.phpを保存し、同じ定数がすでにないか検索します。定義がなければ、WordPress本体を読み込む行より前へ次の一行を追加します。

define( 'FORCE_SSL_ADMIN', true );

標準のdefault-constants.phpは、FORCE_SSL_ADMINが未定義ならfalseとします。falseはHTTPSを使えなくする値ではなく、WordPressが管理画面のSSL通信を強制しない値です。

同じ定数をファイルの上下へ重ねて書いてはいけません。既存の定義がある場合は、その位置と値を記録し、変更する一箇所を決めます。設定を戻す担当者には、変更前のファイルと戻す条件を渡します。

ログイン画面と管理画面がHTTPSの対象になる

FORCE_SSL_ADMINをtrueにすると、WordPressはログインと管理画面に使うURLの方式をHTTPSへ変えます。URL方式を選ぶ処理では、ログイン送信先、ログイン画面、管理画面の各URLがHTTPSになります。

HTTPでwp-login.phpを開いた場合も、ログイン処理が同じホストのHTTPSへ転送します。管理画面では、認証確認がHTTPの要求をHTTPSへ転送します。ログイン画面だけでなく、ログイン後の管理操作までSSLで通信させる設定です。

一方、この定数だけで公開ページ全体のURLは変わりません。商品案内や問い合わせページを含むサイト全体をHTTPSへ統一する場合は、公開URL、内部リンク、転送、外部からのリンク、検索エンジン向け設定を別に設計します。管理画面の保護と、公開サイトのURL変更を一度に済んだものとして扱わないことが重要です。

FORCE_SSL_LOGINとの違いは管理画面まで対象にするかにある

FORCE_SSL_LOGINは、ログイン情報を送る通信をSSLへ切り替えるための定数です。FORCE_SSL_ADMINは、ログインに加えて管理画面もSSLの対象にします。

管理画面で投稿、利用者、設定を扱うなら、ログイン時だけでなく、その後の管理通信も保護する必要があります。目的が管理画面全体のSSL化であれば、FORCE_SSL_LOGINだけを設定して完了とはしません。

二つを重ねて定義する必要もありません。FORCE_SSL_ADMINが有効な場合、WordPressのURL生成はログイン送信先にもHTTPSを使います。定数の数ではなく、SSLにする範囲から選びます。

リバースプロキシがHTTPSを終端する場合は転送ループを確認する

利用者との通信はHTTPSでも、リバースプロキシからWordPressまではHTTPという構成があります。この場合、WordPressが元の通信をHTTPSと判断できないと、HTTPSへ転送し続けることがあります。

転送が繰り返される場合は、FORCE_SSL_ADMINを何度も書き換えず、WordPressがHTTPSを判定できるサーバー情報を受け取っているか確認します。転送元の情報を無条件に信頼する設定は加えず、プロキシを管理する担当者と、信頼するヘッダーと接続元を決めます。

共有サーバーでは、利用者がプロキシ構成を確認できない場合があります。設定方法を推測せず、ホスティング会社へ、管理画面だけをSSLにする構成に対応しているか、WordPressがHTTPSを判定する条件は何かを確認します。

ログアウトした状態からHTTPとHTTPSの両方を確認する

設定後は、ログイン済みの画面だけを見て終わらせません。別のブラウザーかプライベート閲覧を使い、HTTPのログインURLを開きます。HTTPSへ一度で転送され、証明書の警告が出ないことを確認します。

次にログインし、ダッシュボード、投稿編集、メディア、設定の画面を移動します。アドレスがHTTPへ戻らないこと、画像やスクリプトの読込エラーがないこと、保存操作を完了できることを見ます。最後に公開ページを開き、管理画面だけをSSLにする意図なら、公開URLが不用意に変わっていないことも確認します。

確認記録には、設定した定数、証明書の対象ドメイン、確認したURL、転送回数、確認日時、変更担当、復旧担当を残します。作業を委託しても、wp-config.phpの変更箇所と、管理画面へ入れない場合の戻し方はサイト側で持ちます。

最初にすることは、FORCE_SSL_ADMINを追加することではありません。現在のhttps://のログインURLを開き、証明書の警告なしに正しいWordPressが表示されるか確認してください。

戻る