CloudFlare使ってブログをSSL対応した

   

ちょっと前にこのサイトが話題になった

http://www.httpvshttps.com

画像をhttpで読み込むのとhttpsで読み込むのでは、プロトコル上の制約によりhttpsの方が早くなるらしい。SPDYっていうのが使えるから。

で、このブログのトップページなんかは画像満載だし、常時SSL対応した方がパフォーマンスあがるんじゃないかなと。会社のサイト(知識プラットフォームのリバネス)もSSL対応して安定運用してるし、そろそろ自分のブログもやろうかなと思ってやってみた話です。

ただ、セキュリティ証明書は取ってないんです

自分のサーバにセキュリティ証明書はインストールされていません。なので、以下に書いてある事は、セキュリティ的には何の意味もありませんのでご注意ください。個人情報を取り扱うサイトで同じようなことやったらだめですよ。僕の場合はそういうの無いので。

CloudFlareのFlexibleSSLという機能を使う

CloudFlareを無料で使ってるのですけど、無料なのにSSL対応とかしてくれるので神なんじゃないかなと思うわけです。

で、FlexibleSSLってなんなのというのはこれを参照

ssl

僕のブログの場合は、CloudFlareがキャッシュしてくれているんだけど、そのキャッシュサーバと閲覧者の間だけはSSL接続しましょうと、そんな話です。

なので、ブログの様な、発信しっぱなしのコンテンツの場合は、自分のサーバ側への通信が必要ないのでこれでもさほど問題は生じません。

以下は設定方法。やることは以下の通り

  1. CloudFlareのSSL設定をFlexibleSSLに変更する
  2. nginxの設定を変更する
  3. wp-config.phpに若干追記する
  4. WordPressの設定URLをhttpsに変更する

CloudFlareのSSL設定をFlexibleSSLに変更する

CloudFlareの管理画面に入りましょう

cf

CloudFlareSettingsをクリックします。

真ん中辺りに設定箇所があります

ssl

ここをFlexible SSLに変えます。

これだけ。

nginxの設定を変更する

confファイルを変更します。

server {
    listen      80;
    server_name geeorgey.com;
    return 301 https:geeorgey.com$request_uri;
}
server {
    listen 443;
    ssl on;

    # ドキュメントルートの設定
    root        /var/www/html/$host;
    index       index.html index.htm;
    charset     utf-8;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers             HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
以下続く・・

こんな感じ。httpのアクセスをhttpsに転送するのと、ssl関連の設定。

ほかはここに詳細に書いたのと一緒

wp-config.phpに若干追記する

<pre class="brush: plain; title: ; notranslate" title=""><?php

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
    && $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") {
  $_SERVER['HTTPS'] = 'on';
}

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

〜ここから下は元々書かれている部分〜</pre>

wp-config.phpの先頭にこいつを追記する。

んで最後に管理画面からURLをhttpsにすれば完了です。

おすすめ記事一覧

 - Wordpress