オレオレ証明書で WordPress 管理画面へ SSL 接続する


セキュリティ対策の一環として、WordPress の管理画面へ暗号化接続すると決めて数週間。やっとその気になったので、諸々作業をしてみた。要件としては“自分だけが管理画面に対して https で接続できれば良い”というただ1点。

あとはおまけとして、“管理画面に http でアクセスしようとすると自動的に https へ飛ばす”ということと、“通常のコンテンツに https でアクセスが来たら http へ戻す”という挙動を実現させる。

ただ後者に関しては、証明書を持ってない人が https でエントリにアクセスすると、証明書に関するアラートが出ちゃう。まぁこれ、私のオレオレ証明書を許可していただければエントリ読めるのだけど、普通ならそれはしないと思われ。

以下、作業手順。

専用のディレクトリを作ってオレオレ証明書を発行

上記手順でオレオレ証明書の発行は完了。domain.key と domain.csr のパスは控えておくこと。

SSL アクセス専用の設定ファイルを作る

nginx の設定ファイルには、conf.d 以下にある .conf ファイルを読み込ませる記述があるはず。というわけで、ssl.conf というファイルを作成する。conf.d 内には example_ssl.conf というサンプルがあるけど無視した。

本来であれば、通常のエントリ等への自身以外からのアクセスは、証明書のアラートを出さないで自動的に http へ飛ばしたいのだけど、そこがよくわかっていない。ただまぁ、これを読んで試してみる方くらいしかお目にかからないだろうから気にしないという方向に。ていうか、仕様上仕方ないかも。

ログインページおよび管理画面へのアクセスは必ず https へ飛ばす

ssl.conf での設定とは逆に、ログインページおよび管理画面へのアクセスは http だったとしても https へ飛ばす。こちらは nginx.conf 側に rewite 文を記述する。

先にも書いてあるけど、WordPress 用のディレクトリがある場合は rewite 文も修正になるので注意する。

設定ファイル構文チェックと nginx の再起動

各種設定が終わったら、設定ファイルの構文をチェックして再起動する。問題があればアラートが出るのでそれを確認して修正すること。

作業が完了したので、まずはログインページにアクセスしてみる。怪しいオレオレ証明書であることを警告する画面になるはずなのだけど、それは「おまえを信じるおまえを信じろ」1 というやつで許可しましょう。あくまで自身用ですから。

なお、途中でも書いたけど “No input file specified.” という表示になる場合は PHP 関係のエラーになります。この場合は恐らく ssl.conf で記述した fastcgi あたりが怪しいので見直しましょう。

私はこれでうまくいったけど

今回の設定に関してはいろいろと調べていたのだけど、1つだけ解せないこと。それは、どこを読んでも「wp-config.php に管理画面への SSL アクセス許可を行うための記述を追加すること」という部分。私の場合、これをやるとエラーになってログイン画面が真っ白になってしまう。

現状の設定で挙動としては問題ないから良いのだけど、そうであるなら wp-config.php に対する記述というのは必要なのであろうか。ここがよくわからない。でもどこを読んでもそうしろって書いてあるんだよなぁ。もしご存知の方がおられましたら、Twitter などでこそっとご教授していただけますと狂喜乱舞します。

  1. 天元突破グレンラガン – Wikipedia』におけるカミナの名言ですよ。 []