パブリックβになったLet's Encryptでドメイン証明書を無料で取得する話

 みなさんHTTPSしてますか?最近はSNSでもHTTPSが普通になってきましたが、VPS等を使った個人サイトでまともなCAの証明書を取得するにはちょっと敷居が高い。日本の代理店を通すにしても英語が必要になったりします。日本語のみで証明書を取得しようとすると今度はお値段が高いのです。
 大した情報は私のドメインには置いてないのですが、それでも気になるわけです。Free Wifiが普及した今日、悪意のあるスニッファーがいないとも限りませんし、ワイヤード接続であっても経路上でなにがされているかは分かりません。
 そんなセキュリティは気になる、でも英語ほとんどできない、お金もないという私のような人のために無料で、しかもほぼ自動でドメイン証明書を発行してくれる団体が現れました。それが「<a href=”https://letsencrypt.org/" target:”_blank”>Let's Encryptプロジェクト」です(<a href=”https://letsencrypt.jp/" target:”_blank”>日本語訳サイト)。
 このLet's Encryptで発行された証明書はアメリカの大手認証局「<a href=”https://www.identrust.com/" target:”_blank”>IdenTrust」とのクロス署名によっていわゆる「オレオレ証明書」ではなく現在主流のブラウザでなんの手続きもなくブラウザのアドレスバーに鍵マークが付きます。また、メールサーバーやftpサーバーにもこの証明書は使えるので、オレオレ証明書を使用するよりもとりわけ安全にデータをやり取りすることができます。
 能書きが長くなりましたが、今回はUbuntu15.10、apache 2.4.11での証明書の取得から設定を書いていこうと思います。

 証明書作成ツールのダウンロードは適切なディレクトリを作り
$ git clone https://github.com/letsencrypt/letsencrypt
 とし、スクリプトファイルを取得します。そしてletsencryptディレクトリに移動し
$ ./letsencrypt-auto –help
 とします。これで証明書に必要なツール類をインストールし、それが終わるとヘルプを表示します。パラパラと読んでおいてください。
 今回使用するOS、UbuntuはDebian系のOSであり、またバージョンも15.10ということで入っているapacheのバージョン等も新しいため、apacheプラグインが使用できます。なので
$ ./letsencrypt-auto –apache
 でほぼ自動的に証明書がインストールされます。聞かれるのはドメイン名と緊急連絡時のメールアドレス、HTTPでアクセスした時にHTTPSにリダイレクトするかくらいで、あとは利用規約への同意が必要です。
 スクリプトが終了したらすでにapacheではSSLを使ったHTTPS通信が可能になっています。

 さて、この作成された証明書の有効期限は90日間です。「短い!」と思われた方がほとんどでしょうけど、短いのには理由があって「1年とかだと更新するの忘れちゃったりする。短い期間だと自動で更新する手段を使うようになる」みたいな感じのことを書いてました。ということで更新の自動化です。
 あなたが考えたようにcronを使います。
>#!/bin/shif ! /path/to/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then echo Automated renewal failed: cat /var/log/letsencrypt/renew.log exit 1fiapachectl graceful のようなシェルスクリプト(上記は公式サイトにあったシェルスクリプトの丸パクリ)を作って「/etc/cron.monthry」あたりに+xして置いておけば自動でそのうち更新してくれます。してくれるはずです。

 証明書は「/etc/letsencrypt/live/(ドメイン名)/」の配下にシンボリックリンクされてます。「サーバー証明書→cert.pem、秘密鍵→privkey.pem、中間証明書→chain.pem、サーバー証明書と中間証明書が一緒になったの→fullchain.pem」です。renewするごとに本体のファイル名は末尾の数字がインクリメントされていきますがシンボリックし直されているので、メールサーバーやftpサーバーに適用するときもこのシンボリックリンクされているものを使うのが簡単です。

 以上簡単に説明してきましたが、詳しいことは公式サイトの英語を読むなり「読むのも苦手」という人は日本語訳サイトを読んでください。