Webサーバ用に無料のSSL証明書を提供してくれるLet’s Encrypt がようやくベータ期間を終えて正式サービスになったということなので、さっそく利用してみました。手順としてはほぼ Getting Started に書かれたとおりなんですが、とりあえずNginxに導入するパターンのひとつとしてご紹介します。
まず、Let’s Encrypt のクライアントをインストールします。適当な作業用ディレクトリに移動して、GitHubからダウンロードしてきます。
git clone https://github.com/letsencrypt/letsencrypt
で、ダウンロードされてきた「letsencrypt-auto」というのがクライアントになるわけですが、その前にクライアントを実行するために必要なパッケージのインストールやアップデート諸々を行なうために、–help オプションを付けて実行します。ルート権限で行ないましょう。
cd letsencrypt
./letsencrypt-auto --help
ひととおりインストールその他が終わったら、いよいよSSL証明書のインストールです。WebサーバにApacheを使っていればある程度自動化ができるらしいのですが、当サイトはNginxで動かしているので、とりあえず証明書だけ頂くことにします。 というか、ある程度Webサーバをカスタマイズしているサイトであれば、下手に自動化に頼るよりこの方がいいのではないかと。以下のコマンドを実行します。
./letsencrypt-auto certonly --standalone -d example.com
「example.com」はもちろんWebサイトのサーバ名に置き換えます。当サイトであれば「polaire.org」 です。なお、この際443番ポートが開いていないとエラーが発生して証明書取得に失敗しますので、ご注意を。
無事実行に成功すると、/etc/letsencrypt/live/[サーバ名]/ 以下にSSL証明書(fullchain.pem)とプライベートキー(privkey.pem)がインストールされます。
まあ、ここまで来れば、あとはApacheであれNginxであれ、サーバの設定を加えるだけです。当サイトは今までhttpのみ公開していましたから、80番ポートへのアクセスをhttpsに飛ばすような設定も加えました。ざっと、以下のとおりです。
server {
listen 80;
server_name polaire.org;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name polaire.org;
charset utf-8;
ssl on;
ssl_certificate /etc/letsencrypt/live/polaire.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/polaire.org/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:
(...以下適宜続く)
rewriteではなくreturnで飛ばすようにした設定は、こちらの記事を参考にさせてもらいました。たしかにシンプルでいいですね。
ここまで終えてしまえば、後はサーバの設定をリロードすればおしまいです。
……と思ったのですが、当サイトではもうひとつ直さなければなりませんでした。MovableTypeの設定で、サイトURLを「http://~」を「https://~」に変える必要があったのです。まあ、この辺はWordPressでも同じかと思いますが、ご注意を。
以上で、めでたく当サイトもSSLに対応することができました。無料で。Let’s Encrypt、実にありがたいですね。ただ、忘れてはいけない点がひとつ。Let’s Encrypt から発行される証明書は有効期間が3ヶ月しかないのです。無料とは言え、これはちと短いような……。ともかく、有効期限が切れる頃になったら証明書の更新を忘れずに行なわなければなりません。私はモニタの枠に付箋紙で有効期限をメモしておきました(笑)。
以上、おしまい。