会社のウェブサイトなど、見られなくなったら信用に関わるウェブサイトでは御法度ですが、このサイトのようなブログサイトでは、設定をいろいろいじり放題です。
当然、失敗も多いです・・・。今回は、コンテンツデリバリネットワーク(CDN)のCloudFlare(クラウドフレア)を試しているときに、やってしまった失敗です。
記事の内容
CloudFlareのHTTPS接続
CloudFlareは、ウェブサイトのコンテンツを全世界に散らばるサーバーに保存してくれて、閲覧者に近いサーバーから転送してくれるサービスです。
無料でも十分使い物になります。設定は、DNSレコードを編集できる必要がありますが簡単です。
2014年9月から、CloudFlareは無料のSSL接続サービス「Universal SSL」を始めました。これを使えば、閲覧者からCloudFlareのサーバー間の通信をHTTPSで行うことができるようになります。(公式ブログ:Introducing Universal SSL)
このサイトにはSSLは導入されていないのですが、「Universal SSL」を使えば擬似的にSSL対応サイトのように見せることができます。
Universal SSLのメリット
無理をしてHTTPS対応させるメリットは、
- Googleの検索ランキングに影響する(大きくはありません)
- SPDY(HTTP/2に統合)で高速化が望める
- 今後のため
の3点です。Googleのランキングは大事ですが、すぐに見た目で変化が見えるわけではありません。
SPDYというのは、HTTPS通信を行うときに1つの接続を有効活用して高速化する技術です。あまり詳しいことはわかりませんが、1999年のHTTP/1.1以来16年ぶりのHTTP規格、HTTP/2(2015年5月開始)の基盤技術として取り込まれています。
HTTPS通信を行えば、ブラウザによりますが自動的に使われて高速化されるはずです。
FirefoxのMozillaなどは、HTTPSではないHTTP通信で新しい技術を導入しない決定をしているらしいですので、今後のためにできるなら対応しておいたほうが良いのです。
CloudflareのFlexible SSL
Universal SSLを使う設定はCloudFlare上では簡単です。

SSL (with SPDY)
設定画面上で、Crypto(暗号化)を選び、一番上にあるSSL (with SPDY)の設定をOff以外にセットしたら終わりです。時間がかかることもあるようですが、このサイトの場合には最初からアクティブでした。
- Flexibleは、本当はSSLが使えないサイトの場合に使うUniversal SSL
- FullとStrictは、SSL証明書があってHTTPSに普通に対応しているサイトの場合
- Fullは中間者攻撃の対象になる場合がある
です。私の場合は迷わずFlexibleです。
プラグインの設定・導入
そのまま使うと、リダイレクトループでサイトが表示されなくなる場合があるので「WP Super Cache」の中でリダイレクトループを防ぐオプションを有効にします。
また、CloudFlare推奨の公式プラグイン「CloudFlare」を導入して設定します。
これでとりあえず問題なくhttpsサイトを開くことができました。が、問題があってサイト上のすべての内部リンクがhttp://で始まっているので、どこかをクリックした瞬間にHTTPS通信は使えなくなります。
サイト設定の失敗
内部リンクをhttp://から//に書き換えて、今使っているプロトコルをそのまま使うものに変換するプラグインをセットしてみたのですが改善せず、他のサイトを見ながらサイト設定を変えてみました。
これが今回の失敗です。

WordPressアドレスとサイトアドレスにhttpsを入れた
もともと、https://tek2tech.comになっていたサイトアドレスをhttps://tek2tech.comに変えてみました。
これが失敗で、サイトが表示されなくなりました。
対処1:wp-config.phpの編集
一つ目の対処法は、FTPでアクセスしてWordpressのルートディレクトリにあるwp-config.phpを編集することです。
上記の設定画面で設定した値はデータベースに書き込まれて適応されますが、wp-config.phpに指定があればデータベース上の設定よりもwp-config.phpの設定が優先されます。
define('WP_SITEURL', 'https://tek2tech.com'); define('WP_HOME', 'https://tek2tech.com');
この2行を追記(もしwp-config.phpに既にある場合には書き換え)すれば終わりです。
この設定でサイトの表示は復活しましたが、管理画面は戻りませんでした。
対処2:データベースを書き換え
仕方がないので、SQLデータベース上の記述を書き換えることにしました。
データベースのテーブルwp-option中で
- option_name
- siteurl (option_id = 1)
- home (option_id =2)
のoption_value値をhttps://tek2tech.comに直します。これで、復旧できました。
SSL化は諦め
とりあえず、(この方法で)SSL化するのは諦めました。良いプラグインがあったら考えます。
→普通にSSL証明を取って、HTTPS化しました。