6月 172013
 

たまには技術的な話とか。大雑把にだけど。

HTTPによる接続は通信が暗号化されません。そのため、データが盗聴されると、そのままデータを取り出せますから、重要なデータを入力するわけにはいきません。

一方で、HTTPSによる接続は暗号化されます。ショッピングサイトとか重要なデータを取り扱うサイトでは必須です。HTTPSを使うということは、SSLで利用するということになります。同様に、SSLを使った安全な通信でFTP接続を実現するFTPSというのもあるので、普通のFTP使うのは避けましょうね。

本題

パスワードのやり取りとかを安全に行うために、WordPressの管理画面をSSLで使いたいという話です。

ただし、同じドメインのままでSSLを使う(http://をhttps://に変えるだけで済む)には、独自SSLの取得が必要になります。でも、それはまた別にお金がかかるし、今はそこまで投資する気がないので共有SSLというものを使います。

このサイトはレンタルサーバーで運営しているわけですが、レンタルサーバー側で共有SSLを提供していることがあります。私が今使ってるロリポップにもあります。ドメインが違うので管理画面だけに適用したいですが、WordPress内のリンクの扱いとかなんか色々と問題があるわけで。これをなんとかします。

WordPress HTTPS を使えー

まず、前提として、普段使うURLが http://blog.wizaman.net/ で、これはFTPサーバーのルートではなく /blog に対応させてます。んで、ロリポップからもらった共有SSLが https://lolipop-128518b443d4cefe.ssl-lolipop.jp/ なんですが、これはルートで固定されてます(あんまりルートにアクセスしてほしくないけど、どこも同じなのかな?)。ともかく、http://blog.wizaman.net/ に対応するのが、https://lolipop-128518b443d4cefe.ssl-lolipop.jp/blog/ ということです。

で、WordPressに「WordPress HTTPS」プラグインを導入します。管理画面から普通に入れられます。デフォルトだと多分、管理画面のサイドバーに「HTTPS」っていう項目が増えてるから、そこから設定を変えます(設定変えれば、「設定」項目の中に入れることもできます)。「General Settings」パネル内の以下の項目を編集すればおk。

  • 「SSL Host」に「lolipop-128518b443d4cefe.ssl-lolipop.jp/blog」を指定
  • 「Port」はデフォルトの443なら空白でいいみたいだから無記入
  • 「Force SSL Administration」にチェック入れると、管理画面がHTTPSにリダイレクトされるようになる(今回の目的)
  • 「Force SSL Exclusively」にチェック入れると、HTTPSでアクセスしなくていいとこはHTTPSに飛ばす

これで設定を保存すればおk。クソ簡単。でも、副作用があります・・・。

問題

今回の場合、HTTPとHTTPSとでブログのパスが変わるからか、HTTPS下で記事を見れないです(404エラー)。内部では REQUEST_URI を使ってURLを処理をしているとどっかで見たけど、ここが変わっちゃうから簡単にはどうこうできないということなのでしょう多分。

なので、HTTPでしか記事が見れません。ドメインが変わるとCookieのセッション情報がまた別になるので、記事の編集はすべて管理画面から行うしかないです。

まー、これでじゅうぶんだ・・・と言いたいところだけど、プレビューも見れなくなるという困った副作用があります。「Force SSL Exclusively」にチェック入れてると、プレビューがHTTPにリダイレクトされますが、下記の内容を .htaccess に記述してHTTPSに強引に戻しても結局表示できなかったです(404エラー)。

RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} (preview=true)
RewriteRule (.*) https://lolipop-128518b443d4cefe.ssl-lolipop.jp/blog%{REQUEST_URI}

これはHTTPS下で記事見れないのと同じ原因だと思います。「URL Filters」設定でも解決できそうにないです。

あともうひとつ問題を確認していますが、それも含めてまとめると次のような問題があるということになります。

  • HTTPSで記事が見れない
  • プレビューが見れない
  • パスワード保護された記事が見れない(パスワード認証でHTTPSを挟むため)

おそらく内部を直接いじらないとどうしようもないんだろうなーということで、未解決のまま諦めました。独自SSLなら困らないと思うんですが、いい方法ないですかね?

(2014/06/18 追記)
投稿画面の「メディアを追加」により挿入されるタグで使用されるURLがログインしている方(つまり、共有SSLの方)が使用されてしまいます。「WordPress HTTPS」によって、記事閲覧の際には閲覧用のURLに置き換わりますが、PhotonによるCDNの恩恵が受けられなくなるようです。また、将来のサーバ移行時にトラブルのもとになるかもしれません。

設定のリセット

設定間違えたら管理画面にアクセスできなくなるんで、設定のリセットの仕方も一応。

wp-content/plugins/wordpress-https/readme.txt によると、2つの方法がありますが、「WordPress HTTPS」プラグインの wordpress-https.php を編集する方法を紹介しておきます。

wp-content/plugins/wordpress-https/wordpress-https.php の中に下のように設定リセットのための記述がコメントアウトされてるので、このコメントを外して、FTPサーバーに反映する。

//define('WPHTTPS_RESET', true);

HTTPから管理画面にアクセスできるようになるはず。そしたら、アクセスする度に設定がリセットされては困るので、再びコメントアウトしてファイルを元に戻せばいいです。

おしまい。

コメントを残す

Top