WordPress を常時SSL化しよう

巷で話題の「常時SSL」。なんでも、SEOに効果があるとかないとか。
つい最近 (2016年4月) に Let’s Encrypt という無料のSSL/TLS証明書発行サービスが開始されたこともあり、常時SSLに対する敷居は格段に低くなったと感じています。

そこで、当ブログ最初の記事として WordPress を常時SSL化した方法とつまずいた点についてまとめていこうと思います。


対象環境

今回作業を行った環境は以下のようになってます。
環境が違えばやることも微妙に変わってくるので、ご自身の環境に合わせて調整してください。

  • ServersMan@VPS Entry プラン CentOS 7 (64bit) シンプルセット
  • Apache 2.4.6
  • WordPress 4.7

Let’s Encrypt について

Let’s Encrypt は総合ポータルサイトにて下記のように説明されています。

Let’s Encrypt は、認証局(CA)として「SSL/TLSサーバ証明書」を無料で発行するとともに、証明書の発行・インストール・更新のプロセスを自動化することにより、TLS や HTTPS(TLSプロトコルによって提供されるセキュアな接続の上でのHTTP通信)を普及させることを目的としているプロジェクトです。

非営利団体の ISRG (Internet Security Research Group) が運営しており、シスコ(Cisco Systems)、Akamai、電子フロンティア財団(Electronic Frontier Foundation)、モジラ財団(Mozilla Foundation)などの大手企業・団体が、ISRG のスポンサーとして Let’s Encrypt を支援しています。

引用:Let’s Encrypt 総合ポータル

なんというかもう本当にありがとうございます。
でも、こんな風に思われる方がいるかもしれません。

「無料でSSL証明書が発行されるなら、有償でSSL証明書を契約する必要ないじゃん」

ところがそんなことはないんです。

SSL証明書にはいくつかの種類があり、ドメインが存在していることを証明するだけのものから、そのドメインを所持している組織が実在していることを証明するものまであります。
この Let’s Encrypt を通して取得できるSSL証明書はあくまでドメインの存在証明しかできないので、企業のホームページなんかに利用するには向かないんです。

そういった場合には組織まで含めて証明してくれるSSL証明書をちゃんと契約して適用する必要があります。

SSL証明書の取得

さっそくSSL証明書の取得をしていきます。
まずは証明書取得に必要なパッケージを yum でインストールしていきます。

yum install -y certbot

無事インストールできたら、証明書を取得します。
この際80番ポートと443番ポートを使用するため、一度 Apache は止める必要があります。

service httpd stop

その後証明書の取得をします。
(「blog.kurage.click」の部分はご自身のドメインに変更してください)

certbot certonly --standalone -d blog.kurage.click

途中メールアドレスの入力や規約への承諾がありますが、見ればわかると思います。
完了したらちゃんと証明書が出来上がっているか確認しましょう。

ls /etc/letsencrypt/live/blog.kurage.click
cert.pem chain.pem fullchain.pem privkey.pem

リストに表示されればOKです。

Apache への適用

無事証明書が出来上がっていることが確認できたら、Apache に設定してあげましょう。

vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/letsencrypt/live/blog.kurage.click/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/blog.kurage.click/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/blog.kurage.click/chain.pem

ついでに、全てのページが https で表示されるよう設定もしておきましょう。

ServerName blog.kurage.click;
Redirect "/" "https://blog.kurage.click/"
DocumentRoot /var/www/wordpress

ちなみに、いろいろなところで rewrite を設定して強制的に https に飛ばす方法方法が紹介されていましたが、私の環境ではうまくいきませんでした。
Apache のバージョンの問題なのか、はたまた設定の仕方が間違っていたのか・・・。

設定が完了したら Apache を起動します。

service httpd start

ブラウザから http でアクセスして、https にリダイレクトされればおしまいです。

おわりに

この先お問い合わせフォームだったりログインが必要なページだったりを設置することも見越して先にSSL対応を行いましたが、思ったよりもすんなり導入することができました。

無料のSSL/TLS証明書発行サービス、これを機に導入してみてはいかがでしょうか。