Welcartで運営するネットショップを、常時SSL化(常にhttps://でアクセス)する手順を紹介します。
常時SSL化の手順はこのようになります。どれも必要不可欠な作業ですが、間違えるとアクセスできなくなることもあるので慎重に行いましょう。
目次
1.SSLをサーバーにインストールする
「独自ドメインに対してSSL証明書を取得してサーバーにインストールする」なんて作業は、私も含めサーバーエンジニアでない人にとっては避けて通りたいところですよね。 でも、最近ではとても簡単にSSLをインストールできたり、無料のSSLを利用できたりしてとても便利になりました。 無料といっても共有SSLではありません。Let’s Encrypt というやつですね。 このSSLでクレジット決済が行えているサイトも拝見しました。いつ使えなくなるか少々不安はありますが、小規模サイトにとっては強力な味方ですよね。
とにかく、ネットショップを運営するならば、共有ドメインと共有SSLなんていう選択はやめましょう。 独自ドメインで常時SSL化、これが正しい道です。
この簡単にSSLをインストールできる便利な操作画面を持ったサーバーは、主に共有(共用)サーバーに多く見られます。 ただ、サーバー会社によって操作方法が異なり、この記事でそれらを解説することはできません。 もちろん私も、全てのサーバー会社を経験したわけではありませんので、SSLのインストール方法については、ご利用のサーバー会社のドキュメントを見るか問い合わせてみてください。
無事SSLがインストールできたら、サイトにアクセスして確かめてみましょう。 もしWordPressがインストールされているのでしたら、このURLにアクセスすると確認できます。
wp-contentフォルダには空のindex.phpが置いてありますので、それにアクセスしてみるという事です。 画面は真っ白ですが、例えばChromeでしたら、アドレスバーに「保護された通信」という緑色の文字が見れます。
SSLのインストールは、なかなか自分で行うのは難しいかもしれません。 しかも、毎年更新作業が必要です。 専門の業者に任せてしまう方が、早くて安全かもしれませんね。
クレジットカード決済を行うならば
共有サーバーのお話をしましたが、クレジット決済を行う場合、一部の共有サーバーは利用ができないので注意が必要です。 今のところ私が確認しているのは、お名前.comとロリポップの安いプランです。 もしかしたら上位プランではできるのかもしれません。 そもそもクレジット決済を行うには、それ相応のサーバースペックが必要となるので、これらのサーバー以外でも、料金で言えば月額500円以下といった安価なサーバーは、クレジット決済ができないと思った方が無難です。
どのサーバーをチョイスすべきかについては、「クレジット決済を行う場合のサーバーの注意事項」をご覧ください。
2.WordPressの設定を変更する
常時SSL化を行うときのWordPressの設定はとても簡単です。 一般設定の2つのURLを、https://で始まるよう変更するだけです。
HTTPSおよびSSL関連のプラグイン、つまり強制的にhttps://のURLに変換するタイプのプラグインは使わないようにしましょう。クレジット決済でエラーになる可能性があります。プラグインを使わずとも、このURLの設定だけで十分です。
このWordPressのURLの設定変更は必須
このURLを変更せずに運用しているサイトを時々見かけます。 実はこのURLを変更せずとも、手順4のリダイレクトを行えばhttp://でアクセスしてもhttps://に自動的に切り替わります。 しかし、利用しているプラグインの中には、WordPressに設定されているURLをそのまま利用している物もあり、その場合は、セキュアなコンテンツを利用していないといったエラーが出ることになります。 あるいはJavaScriptが読み込まれず、想定した動作をしないという事にもなるかもしれません。 ですので、WordPressのURLを変更するのは必須だと思った方が良いのです。
3.Welcartの設定を変更する
常時SSL化する場合、Welcartのシステム設定の「SSLを使用する」というオプションはチェックを外します。
Welcartのこの「SSLを使用する」という言い回しが悪くて、多くのユーザーの皆さんを混乱させてしまっていることをお詫びします。この「SSLを使用する」を正しい言い方に直すと、「SSLと非SSLの切り替えを行う」という事になります。従いまして、常時SSL化する場合は「SSLを使用する」のチェックを付けないでください。
WCEX Mobile プラグインは必要か
SSLと非SSLの切り替えを行なっていた時代は、スマホのセキュリティー上 WCEX Mobile プラグインが必要でした。しかし、レスポンシブデザインテーマを使っているサイトでは、常時SSL化することでこの機能は要らなくなりました。
PC専用テーマとスマホ専用テーマを切り替えている場合は、WCEX Mobile プラグインはデバイスチェンジャーとして利用することはできます。ただ、デバイス切り替えプラグインは無料でもありますので、わざわざ WCEX Mobile を購入する必要はないのです。
もし常時SSL化を行い、WCEX Mobile プラグインでデバイス切り替えだけに利用しようとする場合は、下記の設定に注意が必要です。
「SSLを無効にする」にチェックを入れてください。これは、「SSLと非SSLの切り替えを無効にする」という意味になりますので、煩わしくて申し訳ないのですが、ここは無効にするという事になります。
4.http:// でのアクセスを https:// にリダイレクト
手順2で、WordPressの2つのURLをhttps://にしましたが、実はこれを行っても、フロントページをhttp://でアクセスするとそのまま暗号化なしでページが表示されてしまいます。https://に切り替わらないのです。そこで、サーバー側で強制的にhttps://に切り替える設定が必要になります。特に、途中から常時SSL化を行ったショップでは、Googleなどのインデックス(しばらくすると更新されます)も、お客様のブックマークもhttp://なので、非SSLのアクセスは絶えません。必ずリダイレクトの設定は行いましょう。
Apache の場合
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]これは一般的な記述です。共有サーバーの場合はこれではうまく行かない場合があります。
例えばさくらサーバーの場合
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ https://ドメイン名/$1 [R=301,L] </IfModule>
各サーバー会社で異なる場合がありますので、サーバー会社のマニュアルを参照してください。
5.データベースを書き換える
http から https に切り替えた際は、記事の中あるいはテキストウィジェットの中に書かれた URL が http:// のまま残っています。これらを https:// に書き換えたいのですが、一つひとつ記事を確認していくのは大変です。そこで「Search Replace DB」というツールを紹介します。
通常、データベースを自分で一括置換しようとすると、シリアライズされたデータが壊れてしまって、最悪 WordPress が動作しなくなってしまいます。Search Replace DB はそう言った事態にならないように、特定の文字列を置換してくれる便利なツールです。
例えば、 http://www.sample.com > https://www.sample.com と設定すると、データベース内のすべての対象を、シリアライズを壊すことなく変換してくれます。
これはドメインの変更時にも利用できます。
例えば、 http://127.0.0.1 > http://www.sample.com SSL のインストールが済んだら http://www.sample.com > https://www.sample.com
じつは、これを使えば、「2.WordPress の設定を変更する」のURLの設定は必要なくなります。