本記事では CloudFlare の Flexible SSL を設定した後に行う必要のある設定のうち、
通常のSSLとは違う特殊な設定が必要なものについて紹介していきます。
CloudFlare での Flexible SSL の設定がまだの人は
こちらの記事を参考に済ませておいてください。
Flexible SSLの場合、SSLでアクセスしているのは Cloudflare までで、
Cloudflare からサーバーには HTTPでアクセスしています。
ですから サーバー(プログラム)側は SSLでアクセスしていても
そうとはわからずに SSLに転送しようとして 無限ループが発生してしまいます。
それを防ぐために 次の記述をシステムが最初に読み込むファイルに
追加する必要があります。
例えば WordPress であれば wp-config.php
に追記してください。
(編集が必要なのはここまでです !
より上への追記をお勧めします。)
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
CloudFlare の Flexible SSL を使用するとPHPで取得したIPアドレスが全て CloudFlare のものになってしまいます。
これを防ぐために次のコードを追記しましょう。
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
2種類の方法を紹介しますので どちらかを設定してください。
最初に紹介する方法が サーバーへの負担なども少なくお勧めです。
タブ「Crypt」内の 「Always Use HTTPS」を ONにするだけです。
次の記述を .htaccess
に追記します。
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ここまでの設定が完了したら 通常通り SSL化に必要な作業を行ってください。
WordPress であれば サイトアドレスの設定を変更したり、
記事内の 画像のパスやリンクを SSLに変更したりする必要があります。