ワードプレス(WordPress)セキュリティ

WordPressを常時SSLで使うさいはレンタルサーバによって設定方法に注意!さくらインターネットの場合はwp-config.phpに追加が必須

この記事は約7分で読めます。

常時SSL今年は常時SSL化の流れが一気に加速する年になるだろう。Googleが「https」で始まるSSLサイトとそうでないサイトを明確に区別しだしている。最近はCMSとしてWordPressを利用しているWEBサイトも多いが、SSL化が簡単にできるレンタルサーバとそうでないレンタルサーバーがある。
実は、さくらインターネットはWordPressでのSSL化がむずかしいレンタルサーバである。昨年、さくらインターネットのサポートに問い合わせたさいには、ラピッドSSLを使ったSSLでWordPressで構築した場合には正式サポートができませんと明言された。wwwの有無でリダイレクトされる設定など複数の原因で、WordPressのSSL化がうまくいかないのである。このときはさくらのVPSサーバを勧められたが、VPSサーバにするのは断念して他の方法を探っていた。
いろいろと調べてみると、「wp-config.php」と「.htaccess」に追加記述をすると、WordPressでSSL化がうまくできることがわかった。その方法を以下に紹介する。

WordPressを常時SSLで使う方法

さくらインターネットでラピッドSSLの設定を済ませている場合

参考サイト https://www.harukas.org/blog/2278/
このサイトで詳細な解説があるので、どうしてこのような設定になるのかは省略する。確認したい方は上記のURLをご覧ください。

前提条件として、すでにさくらインターネットでラピッドSSLの設定を済ませている場合の設定方法である。ラピッドSSLの設定がまだの方はhttps://dm2.co.jp/2015/10/sslrapidsslcsr.htmlをご覧ください。

以下のファイル「wp-config.php」と「.htaccess」を編集するには、FTPソフトとテキストエディタが必須である。FTPソフトはFFFTPが有名どころだがセキュリティの観点からできれば使わないほうがいい。最近ではWindowsでもMACでも使えるサーバーダックのほうが使い勝手がよいのでおすすめしている。

しかし、レンタルサーバによっては、ファイルマネージャという機能が用意されていて、WEB画面だけで編集することもできる。例えばさくらインターネットであれば管理画面にファイルマネージャがあるので、その機能で編集可能である。

wwwありの場合

www.mydomain.comをSSL化したい場合は以下の設定を追加すればよい。

wp-config.phpに追加

if( isset($_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’]) ) {
$_SERVER[‘HTTPS’] = ‘on’;
$_ENV[‘HTTPS’] = ‘on’;
$_SERVER[‘HTTP_HOST’] = ‘www.mydomain.com‘;
$_SERVER[‘SERVER_NAME’] = ‘www.mydomain.com‘;
$_ENV[‘HTTP_HOST’] = ‘www.mydomain.com‘;
$_ENV[‘SERVER_NAME’] = ‘www.mydomain.com‘;
}

.htaccessに追加

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.mydomain.com/$1 [R=301,L] </IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>

# END WordPress

mydomainの部分は自分の独自ドメインに変更すればこのまま使えた。

なお、SSLの場合はwwwの有無は明確に区別される。SSL化したいドメインがwwwありのwww.mydomain.comの場合は上記設定でOKだった。

www無しの場合

さくらインターネットでwwwなしのSSL化は、そもそもこのような設定をしなくてもうまくいく可能性がある。(wwwがつく場合のリダイレクトが問題なので)
ここでは、あくまで「この方法でも実現化できる」ということでの参考例として記載した。
wwwなしのmydomain.comをSSL化したい場合は以下の設定を追加すればよい。

wp-config.phpに追加

if( isset($_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’]) ) {
$_SERVER[‘HTTPS’] = ‘on’;
$_ENV[‘HTTPS’] = ‘on’;
$_SERVER[‘HTTP_HOST’] = ‘mydomain.com’;
$_SERVER[‘SERVER_NAME’] = ‘mydomain.com’;
$_ENV[‘HTTP_HOST’] = ‘mydomain.com’;
$_ENV[‘SERVER_NAME’] = ‘mydomain.com’;
}

.htaccessに追加

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L] </IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>

# END WordPress

※mydomainの部分は必ず自分の独自ドメインに変更すること。

WordPressのドメイン設定を変更する

ここまでの設定がうまくいけば、wwwあり、www無し、いずれかでもhttpsで始まるページが表示できるはずである。

その後、WordPressの設定でURLを変更する。

wpsettingippan.jpg

管理画面の、設定→一般をクリックするとURLを記入してある部分が表示される。

wpsettingippanurl.jpg

WordPressアドレス(URL)とサイトアドレス(URL)の部分をhttpsから始まるURLに変更する。
現在設定されているURLはhttpから始まっているはずなので、「s」を挿入するだけである。

WordPressのドメイン設定がすでに完了していて、WordPressアドレスとサイトアドレスが違う場合がある。その場合は現状の設定に単純に「s」を挿入するだけと割り切って設定するのがよい。

WordPressをインストールしたディレクトリと別のディレクトリにサイトのホームページを設定している場合の設定例

WordPressアドレス(URL) → https://sindan.org/wp
サイトアドレス(URL) → https://sindan.org

設定画面
wpkaisouippamhttps.jpg

なお、上記の画像のURLは実際には存在しない。(あくまでWordPressアドレスとサイトアドレスが違う場合のSSL設定表示例である)

参照記事→ https://www.tohdamikio.com/2015/03/wordpresswp.html

【注意】
上記の説明はすでにhttpsで始まるURL表示ができているSSL化ができている場合での設定例である。まだSSL化ができていない場合はSSLの申し込み手続きなど設定が必要です。

▼さくらインターネットでラピッドSSLを設定するさいの注意
https://www.tohdamikio.com/2015/10/sslrapidsslcsr.html
もご覧ください。