Let’s Encrypt で無料で SSL/TLS サーバ証明書を取得
Webの通信を暗号化してセキュアにデータをやりとりするために、HTTPS (Hypertext Transfer Protocol Secure)を使用するのが主流になっている。
特に、Googleが検索エンジンの検索結果を決める際の指標に、「HTTPS化されているかを考慮する」と発表があった後、クレジットカード等の情報をやり取りしていない個人ブログ等でも、HTTPS化する動きが活発になっている。
HTTPS化するには、SSL/TLS サーバ証明書が必要となり、これまでこの費用がかかるため、導入を見送る人も多かったと思う。
そんな中、Let’s Encrypt という、無料でSSL/TLSサーバ証明書を発行してくれるサービスが提供された。
Let’s Encrypt は、非営利団体の ISRG (Internet Security Research Group)が提供しており、ISRGは、シスコ(Cisco Systems)、Akamai、電子フロンティア財団(Electronic Frontier Foundation)、モジラ財団(Mozilla Foundation)などの大手企業・団体が、スポンサーとして支援している、ちゃんとした組織だ。
Ubuntu 16.04 で Let’s Encrypt サーバ証明書 取得
Ubuntu 16.04 であれば、apt-get install して、letsencrypt コマンドを投入し、コマンドライン上に表示される指示に従って進めば、簡単にSSL/TLS サーバ証明書をGETできる。
まずは必要な letsencryptファイル群をインストールする。
$ sudo apt-get install python-letsencrypt-apache
次に、apacheように、SSL/TLSサーバ証明書を取得する。
$ sudo letsencrypt --apache
※Web上の情報では、「certbot」というコマンドで行う文献をよく目にするが、Ubuntu の場合は letsencrypt コマンドで実施することに注意。
対話形式でドメインの登録等を行う画面が出現する。
まず、「まだ設定がなされていないので、これからマニュアルで設定していくぜ?」と聞かれるので、「Yes」を押す。
次に、SSL/TLS証明書を取得したい対象のドメイン名を記載する。
「そろそろSSL/TLS証明書の期限が切れるぜ?」等のメールの通知先を記載する。
「規約に同意してね」と言われるので、「Agree」と答える。
Easy:HTTP と HTTPS の両方のアクセスをOKする
Secure:HTTPS のみの通信にする
上記どっちにする?と聞かれる。
もう既に、HTTPS に完全に移行する準備ができている場合は、「Secure」を選んで問題ない。
私は、段階的にHTTP→HTTPSに移行するつもりなので、「Easy」を選択した。
「おめでとう!」と言われるので「OK」と答える。
これだけで、SSL/TLS証明書の取得が完了する。
なんと簡単なのだ。
#その昔、Verisign から10万円くらいする証明書を購入するときは、もっともっとたいへんだったのに
これで、Apache の設定も実は完了している。
念のため、Apache の設定が入ったか、確認しておくと良い。
$ sudo vi /etc/apache2/sites-available/NAME_OF_DOMAIN_le-ssl.conf
というファイルができており、
SSLCertificateFile /etc/letsencrypt/live/www.letsencrypt.work/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.letsencrypt.work/privkey.pem
という内容等が記載されていればOKだ。
Let’s Encrypt サーバ証明書 自動更新
Let’s Encrypt サーバ証明書は3ヶ月で失効する。
そのため、自動更新を行う必要がある。
cron で月に1度更新するようにしておくと良い。
$ sudo vi /etc/cron.monthly/letsencrypt_renew.sh #!/bin/bash letsencrypt renew service apache2 reload
実行権限を与える。
$ sudo chmod +x /etc/cron.monthly/letsencrypt_renew.sh
WordPress を HTTPS化
WordPressのHTTPS化は様々な方法があるが、今回はプラグインを使った簡単な方法で対応した。
WordPressの管理画面から、「プラグイン」→「新規追加」→「Really Simple SSL」を検索→「インストール」→「有効化」で完了する。
https://ドメイン名 でアクセスしてみて、無事にサイトが見れれば完了だ。
うまくいっていれば、「.htaccess」に、以下を書いて、http の際のページリンク等の情報を引き継ぐために、「301リダイレクト」のルールを記載しておく。
この301リダイレクトの設定をしておかないと、「http://ドメイン名」で、せっかく被リンクを稼いでページランクを高めていたとしても、「https://ドメイン名」になることで、ページランクを引き継げなくなってしまう。
そのために、Really Simple SSLのプラグイン設定の「セッティング」を開き、「Enable WordPress 301 redirection to SSL」のチェックを外し、.htaccess に以下を記述する。
$ vi .htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
この他にも、以下の対応が必要になるので、忘れずに対応しておきたい。
- Google Analytics の再登録(httpのサイト→httpsのサイト)
- Google Search Console の再登録(httpsのサイトを新規で登録する必要あり)
コメント