さくらインターネットでAdmin SSLが使えない

どうも、うしねずみです。

ブログを始めようと思ってレンタルサーバを探し、さくらインターネットに決めました。
以前レンタルサーバを探した時には「共有SSLがない」というのがネックになって対象外になったのですがどうやら今年の初めからさくらでも共有SSLサービスが始まったらしく、値段とスペックのバランスが良かったです。

さてさて、何しろブログは初めてなものでいろいろ調べてみるとどうやらWordpressというツールが一番人気なようです。ということで早速Wordpressをインストール。私は以前からセキュリティは気になるほうで(と言っても知識は少ないのですが)Wordpressでも管理画面をSSLで操作するためのAdmin SSLというプラグインを入れました。

ところが!!
のっけからトラブル発生。うごかない。。。
Admin SSLの説明では「プラグインを有効化するとすぐにhttps接続になるよ(再ログインが必要)」的なことが書いてあるのですが、ログイン画面にアクセスしてもブログのトップページにリダイレクトされます。

 仕方がないのでphpソースをちょっとのぞいてみる。
(最近たまーにphpを触る)
ソースをたどっていくと、どうやらAdmin SSLの設定画面の

phpのソース内でサーバ変数を見て

$_SERVER['HTTPS'] == 'on'

だったらHTTPS接続だと判断する、ということをしているようです。
そしてHTTPSではない場合は「ちゃんとHTTPSでアクセスしなさい」ってことでブログトップにリダイレクトされるらしい。

この値がちゃんと返ってきてるのか、さくらのサーバにテスト用のphpを書いてアップして確かめてみる。
phpのサーバ変数の中でhttpsに関係するのは以下の二つのようだ。

  • HTTPS   ・・・ https接続のときには空でない値が入る(通常は’on’が入る?)。
  • SERVER_PORT   ・・・ サーバが使っているポート番号。HTTPなら80番でHTTPSなら443番。

 この二つが見れればいいので次のように書けばよろし。

print( $_SERVER['HTTPS'] );
print( $_SERVER['SERVER_PORT'] );

このファイルをtest.phpとかにしてアップロードしてアクセスしてみる。
。。。だめ。
httpでアクセスしてもhttpsでアクセスしても、$_SERVER[‘HTTPS’]は空のままだし$_SERVER[‘SERVER_PORT’]は80番が返ってくる。
これではせっかくSSLが使えるのに使えない(><) 

これ以上自分ではわからなかったのでさくらのサポートに問い合わせました。
「phpのソース内から接続がhttpsかどうかを知る方法ってないんですか?」
回答は以下のような感じ。

 「さくらのレンタルサーバ」にてご利用いただけます機能の一つに
Webアプリケーションファイアウォール(WAF)がございます。

 WAF機能はHTTPの環境変数についても対象としており、一部の値についてはフィ
ルタされます。ご了承ください。

 尚、こちらについては当面サーバ仕様を変更することがございませんため、
現状のままとなります。ご了承ください。

つまり、無理ってことです。

悪あがきをして、Admin SSLソース内のis_https()関数の戻り値が常にtrueになるように書き換えてみたけどムダでした。パスワード送信のときだけでもSSLで通信してくれないかなーと思って、ログインボタンのリンク先が

https://ほげほげ/blog/wp-login.php

になるように書き換えてみたけど、共有SSLだとSSLと非SSLでドメイン名が変わるので

(SSL) https://共有SSLサーバ/自分のドメイン名/blog/wp-login.php →ドメイン名は「共有SSLサーバ」の部分
(非SSL)http://自分のドメイン名/blog/wp-login.php →ドメイン名は「自分のドメイン名」の部分

Cookieを使ったphpのセッションがログイン処理後に引き継げなくてうまくいきませんでした。

誰か解決策わかる方いらしたら教えてください。

 

人気ブログランキングへ