無料のSSLサーバー証明書「Let's Encrypt」を使ってサイトをSSL化

Last edited on 2017/10/19 (木) - 20:37

さくらインターネットで、無料のSSLサーバー証明書「Let's Encrypt」を簡単に設定することができるようになったので、早速やってみました。

SSLでアクセスできるようにするのは、コントロールパネルから設定するだけなのでとても簡単です。設定してしばらくすると、設定できたことを知らせるメールが届きます。

さくらインターネットの説明にもありますが、通常のアクセスをSSLで暗号化したページへリダイレクトする必要があります。.htaccessに

SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

と書くことによってできました。.htaccessには他にもいろいろとRewriteCondとRewriteRuleを書いていて、詳細を理解していないのですが、とりあえず先頭に書いたらうまく行きました。

さらに Drupal 7 の場合、settings.php を編集して、

$base_url = 'https://nyanchew.com';

とする必要がありました。securepages などのモジュールはインストールしていません。

設定後、Drupalのテーマ用のCSSが読み込めずに真っ白になりましたが、キャッシュをクリアすれば直ります。

また、Chrome でアクセスすると、保護されていませんという表示になってしまいました。これはページの中に一つでもhttp:// で始まるリンクがあると出てしまうようです。ChromeのDeveloper Toolを使い、Consoleタブの出力を見ながらいくつか手で修正しました。それと、広告関連でhttp://で始まるリンクがあったのですが、いつの間にか無くなっていました。

セキュリティに関して、さらに万全を期すためには、HSTS (HTTP Strict Transport Security)という仕組みを入れるとよいらしく、そのためにはWEBサーバーの設定をするか、あるいは、DrupalのHSTS用のモジュールをインストールするとできるようです。HTTP Strict Transport Security というモジュールを入れてみました。