さくらのレンタルサーバーでSSL

SSL化されていないページは、Google ChromeのアップデートでURL欄に「保護されていない通信」と表示されるようになったのがこの7月、10月のアップデートでは、さらに、この表示が赤く強調されるそうです。

以前のようにお問合せフォームとかユーザーが入力するページだけでなく、サイト全体の常時SSL化が強く求められるようになり、SEO的にも影響があるらしく(検索エンジンが非SSLページよりSSLページの評価を上げるものと思われます)、もうSSLからは逃げられなくなってしまったようです。

VPSでSSLもなかなか大変

SSLの証明書取得はサーバーのIPアドレスとドメインの組み合わせが基本になります。つまり1サイト毎にIPアドレスが取得できる専用サーバーや仮想専用サーバーが必要になり、かなりの手間とコストもかかります。自分の場合、LinuxのVPS(仮想専用サーバー)に、ApacheやらPHPやらMySQLやらウェブサイトを構築するための基本の基本的なソフトウェアのインストールとその設定を行ない、レンタルサーバーだと管理画面のわかりやすいGUIで設定できるバーチャルホストの設定とか、レンタルサーバーだとデフォルトで組み込まれているFTPやphpMyAdminといったユーティリティソフトウェアのインストールや設定とか、未だに慣れないコマンドラインと悪戦苦闘してきました。

1サーバーで複数サイトのSSLを有効化するマルチドメイン対応の証明書もあるものの、企業認証が基本になっているうようでかなりの高額、複数のサーバーを構築した方がずっと安いです。

VPSやクラウドサーバー利用で、他ユーザーの影響を受けにくくなり、ルート権限が無いとインストールできない様々なアプリケーションをインストールしたりできるメリットは大きいものの、サーバーの管理自体を全て自分でする必要が生じます。サーバーの負荷状態を監視したり、外部サーバーに自動バックアップを取ったり、サーバー構築後の管理もかなり大変になりました。

コンテンツ量が多かったり、アクセス数が多かったり、特殊なアプリケーションが必要なサイトの場合はVPSは大きなメリットがあるものの、そうでもないサイトでもSSL化のためだけにVPSを利用しているケースも少なくありませんでした。

Let's encryptでSSL

去年くらいからLet's encryptという無料で証明書を発行してくれるサービスが普及してきました。ただこのLet's encryptのインストールで設定をミスるとApacheが起動しなくなってしまう可能性もあり、運用中のサイトを有償SSL証明書からLet's encryptへ変更することは躊躇せざるを得ませんでした。

ところが、ここにきてLet's encryptを使った無料SSLを提供するホスティングサービスがでてきました。さくらインターネットのさくらのレンタルサーバーも去年末からサービスを提供開始しており、安定してきたものと思われ試してみることにしました。

自分の場合、VPSは一部を除きさくらのVPSを利用しています。トラブルは少なく、サポートもしっかりしています。先頃の北海道の地震で道内全体が停電、利用しているVPSの物理的なサーバーの多くは石狩市にあり、ビビったものの、さくらインターネットのデータセンターではしっかり非常用電源が稼働、その燃料確保とか、国や自治体との連携とか、かなり迅速かつ適切な対応で、全くサーバーが停止することがなかったことは、インフラ事業者として高く評価したいと思います。

ということで、VPSでSSL化していたいくつかのサイトをさくらのレンタルサーバーに移行してみました。

移行の際、サブドメインでも無料でSSL化できるので、仮のドメインでテストサイトを構築し、その仮のドメインでSSL化の検証を行ない、問題がなければ、テストサイトを運用サイトに切り換える、という方法が使えるのは、Let's encryptによるSSL化の大きなメリットだと思います。

Drupalサイトをさくらのレンタルサーバーに移行、無料SSL化

Drupalをさくらのレンタルサーバーに合わせる

さくらのレンタルサーバーでは.htaccessでFollowSymLinksが使えません。Drupalのデフォルトの.htaccessのままだと500エラーになるので、ルートとfilesディレクトリの.htaccessのOptions +FollowSymLinksをコメントアウトします。

.htaccessのリライトルール設定

# Various rewrite rules.
<ifmodule mod_rewrite.c>
  RewriteEngine on

のところに2行追加します。

# Various rewrite rules.
<ifmodule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

これでサイト全体の常時SSL化が有効になり、httpでアクセスするとhttpsに移動するはずです。以前はsecure pagesというDrupalモジュールでSSL化設定をしたりしていたのですが、常時SSL化なので、追加モジュールは無しでOKかと。

DNS設定

ドメインはさくらインターネットじゃないサービスで管理しているのですが、取得したさくらのレンタルサーバーのIPアドレスをDNSのAレコードに設定、さほどタイムラグ無しで反映されました。

ところがさくらのレンタルサーバーに移行してから2ヶ月程して、SSL証明書の自動更新ができませんでした、というメールが来てしまいました。Let's encryptは基本的に3ヶ月毎に更新する必要があるのですが、さくらのレンタルサーバーではこれをcronで処理しているようで、自動更新してくれるはずですが、エラーです。

調べてみたところ「マルチドメインとして使用する」にしておいて、www付の場合のDNS設定をしていなかったことが原因で、www有りにもwww無しと同じAレコードを設定して解決しました。


Let's encryptと有償のSSL証明書で、高額な企業認証とかでない限り、暗号化強度に違いはないようです。VPSで設定していた外部サーバーへの自動バックアップはできなくなったものの、さくらのレンタルサーバーに別サーバーへのバックアップ機能もあります。さくらのレンタルサーバーの無料SSL、シンプルなサイトだと十二分に使えるというのが自分の結論です。