CloudFlare使ってブログをSSL対応した
ちょっと前にこのサイトが話題になった
画像をhttpで読み込むのとhttpsで読み込むのでは、プロトコル上の制約によりhttpsの方が早くなるらしい。SPDYっていうのが使えるから。
で、このブログのトップページなんかは画像満載だし、常時SSL対応した方がパフォーマンスあがるんじゃないかなと。会社のサイト(知識プラットフォームのリバネス)もSSL対応して安定運用してるし、そろそろ自分のブログもやろうかなと思ってやってみた話です。
ただ、セキュリティ証明書は取ってないんです
自分のサーバにセキュリティ証明書はインストールされていません。なので、以下に書いてある事は、セキュリティ的には何の意味もありませんのでご注意ください。個人情報を取り扱うサイトで同じようなことやったらだめですよ。僕の場合はそういうの無いので。
CloudFlareのFlexibleSSLという機能を使う
CloudFlareを無料で使ってるのですけど、無料なのにSSL対応とかしてくれるので神なんじゃないかなと思うわけです。
で、FlexibleSSLってなんなのというのはこれを参照
僕のブログの場合は、CloudFlareがキャッシュしてくれているんだけど、そのキャッシュサーバと閲覧者の間だけはSSL接続しましょうと、そんな話です。
なので、ブログの様な、発信しっぱなしのコンテンツの場合は、自分のサーバ側への通信が必要ないのでこれでもさほど問題は生じません。
以下は設定方法。やることは以下の通り
- CloudFlareのSSL設定をFlexibleSSLに変更する
- nginxの設定を変更する
- wp-config.phpに若干追記する
- WordPressの設定URLをhttpsに変更する
CloudFlareのSSL設定をFlexibleSSLに変更する
CloudFlareの管理画面に入りましょう
CloudFlareSettingsをクリックします。
真ん中辺りに設定箇所があります
ここをFlexible SSLに変えます。
これだけ。
nginxの設定を変更する
confファイルを変更します。
[code]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;
以下続く・・
[/code]
こんな感じ。httpのアクセスをhttpsに転送するのと、ssl関連の設定。
wp-config.phpに若干追記する
[code]
<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>
[/code]
wp-config.phpの先頭にこいつを追記する。
んで最後に管理画面からURLをhttpsにすれば完了です。