無料のSSL/TLS証明書「Let’s Encrypt(certbot-auto)」を導入してみた

Let's Encrypt

ひと昔前は「ベリサインでSSLサーバ証明書を取るなら年間数万円かかる」というのが
常識でした。今でも数万円かかるサービスは残ってますが、個人的には「Rapid-SSL」辺りが
5000円程度のサーバ証明書を対応し始めてからSSLが非常に導入しやすくなったと思います。
そして「KingSSL」は900円。一体何が起きてたのかとポルナレフ状態ですが、
ついに無料のサーバ証明書が出てきました。それが「Let’s Encrypt」です。




Let’s Encryptとは

詳しくはこちら辺りをご覧頂きたいのですが、ポイントとしては「Let’s Encrypt の基本方針」にも書いてある通り、特に「無料」と「運用自動化」というのが素晴らしいです。
では早速導入してみましょう。環境は「CentOS6/apache」です。
参考サイト:https://letsencrypt.jp/usage/

「certbot-auto」のインストールと実行

まずはEPELリポジトリを有効にして、指定URLから「certbot-auto」をwgetでダウンロード。
実行権限を付けた後、指定パラメータを渡して実行します。
パラメータの詳細はこちら

# yum install epel-release
# cd
# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto
# ./certbot-auto certonly --webroot -w /var/www/vhosts/memento-mori.jp/html/ -d memento-mori.jp --email le@memento-mori.jp

正常終了すると、「/etc/letsencrypt/live/memento-mori.jp/」下に証明書関連ファイルが自動作成されます。ちなみにwebrootプラグインによる認証を行っているため、ドキュメントルートに.htaccessを置いてIP制限していると認証に失敗したので一時的に無効にしました。

出力ファイル
ファイル名 説明
cert.pem SSL/TLSサーバ証明書(公開鍵を含む)のみ(中間証明書などは含みません)
privkey.pem SSL/TLSサーバ証明書の公開鍵に対応する秘密鍵
chain.pem 中間証明書(SSL/TLSサーバ証明書の内容は含まれていません)
ssl.confファイル設定

apacheのssl.confの場合、以下のように設定する事でサーバ証明書の対応は完了です。
※webサーバの再起動を忘れないように

SSLCertificateFile /etc/letsencrypt/live/memento-mori.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/memento-mori.jp/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/memento-mori.jp/chain.pem
自動更新の設定

一般的なサーバ証明書の有効期間は1年ですが、「Let’s Encrypt」の有効期間は90日ですので、
1~2か月くらいの頻度で定期的に更新した方が良いです。
やり方は「certbot-auto renew –force-renew」を行って証明書を更新した後にwebサーバを
再起動するだけですが、webサーバの再起動を定期的に自動起動するのはやや恐ろしいので
今回は証明書の更新のみ行う事にします。まずはテスト用に「–dry-run」オプションを付けます。

/root/certbot-auto renew --force-renew --dry-run

問題がなさそうならcronに以下を登録して更新を自動化します。(毎月1日の0時0分に起動)

00 00 01 * * /root/certbot-auto renew --force-renew