そういえば、WordPressのログイン画面がSSLになっていなかったので、修正しました。
それは本当にフリースポット?
正月の間、iPhoneの3日で1GBの制限に引っかかってしまったので、近くのフリーWi-Fiスポットを使っていたのですが、そういえばWordPressのログイン画面がSSLになっていないことに気づきました。
ログインページがSSLになっていない場合、ちょっとネットワークの知識がある人が仕掛ければ通信パケットをキャプチャして、簡単にログインIDとパスワードを入手することができます。
例えば、アクセスポイントの名前をFONとかフリースポット的な物にして利用者をおびき寄せて、アクセスポイントとインターネットの経路にアプリの通信トラブルなんかの時に使うパケットキャプチャソフトを起動しておけば、いとも簡単に通信内容を見ることができます。Windows用の高機能なキャプチャソフトだとHTTP通信を見やすいように加工して表示してくれるので、知識無くても簡単に通信内容を把握することができます。
WordPressの管理画面を標準機能でSSL化する
SSLにしておけば通信内容は暗号化されるので、IDとパスワードを盗まれる心配はありません。やり方ですが、こちらのページを参考にさせて頂きました。
管理画面での SSL 通信 – WordPress Codex 日本語版
標準でログインをSSL強制にすることができるんですね(汗)
wp-config.phpファイルを修正して…
define('FORCE_SSL_ADMIN', true);
を追加すれば良いようです。こうすると、ログインの画面にアクセスすると強制的にSSLのログイン画面が表示されるようになります。
この指定だと管理画面もすべてSSLになります。本当は管理画面遅くなると嫌なので、ログイン画面だけSSLにすればよいかと思ったのですが、なぜかうちの場合、ログインだけをSSL化する
define('FORCE_SSL_LOGIN', true);
の指定がうまく動作せずに、前述のSSL_ADMINの方を指定しなければいけませんでした。
あ、それと利用されているサーバーでSSLは別途入手が必要です。むしろこっちが面倒でしょうね。サービスによっては共用のSSLが使える所もあるようですが、それで今回のような方法が使えるかはわかりません。
MarsEditもSSLへ
MarsEditなどのブログ投稿ツールでも使われているXML-RPC。軽く仕様をみた感じだと暗号化せずに平文でユーザー、パスワードを送っているっぽいので、こちらの宛先もSSLにしておきました。
MarsEditの左のツリーから自分のサイトで右クリックして「Edit Setting」。
「API Endpoint URL」を「https」に変更しました。これでフリースポットからブログ投稿しても大丈夫そうですね。
無料のSSL
難易度高いので、あんまりお勧めしませんが、SSLが無い!という人にはStart SSLという無料でSSLを発行してくれるサイトがあります。
StartSSL™ Certificates & Public Key Infrastructure – StartSSL™ Home
日本語の紹介記事もいくつかあるので、勉強してみたい方は試してみられるとよいかもしれません。有償でも年間2,600円からあるので、そっちでもいいとは思いますけどね。手続き日本語で楽ですし。
SSL証明書 RapidSSL 2600円 ワイルドカード 18000円 (RapidSSL Strategic Partner)
まとめ
フリーのWi-Fiスポットを使う場合は、WordPressのログインページはSSLにしておいた方が安心だとは思います。一番いいのは、テザリングなどの自前の安全な通信経路を確保しておくことかもしれませんね。