Let’s EncryptでSSL証明書を自動更新する
206rc.netドメインで公開しているコンテンツについて、CloudFlareがフロントエンドでSSL接続サービスを提供していますが、バックエンド側もLet’s Encryptを用いてSSL接続が可能なように設定してあります。CloudFlareで言うところのFull SSL(Strict)になります。
毎回手動で…となると面倒くさいので(SymantecのSSL証明書等は自動更新できないので、手動でやるしかありません。自分が方法を知らないだけかもしれないけど。)、自動更新用shell scriptを作成して2ヶ月に1回実行させています。
# crontab -l 30 05 01 */2 * /root/shells/letsencrypt-update.sh
shell script(/root/shells/letsencrypt-update.sh)の中身は至ってシンプルです。ログを取得するようにしている部分がちょっと面倒なだけで(笑)
#!/bin/bash TODAY=`LANG=C date +%Y%m%d` LOG="/var/log/letsencrypt/${TODAY}.log" mkfifo letsencrypt-update trap 'rm letsencrypt-update' EXIT tee -a ${LOG} < letsencrypt-update & exec > letsencrypt-update 2>&1 scl enable python27 "/root/letsencrypt/letsencrypt-auto renew --force-renew" if [ $? -eq 0 ]; then /sbin/service nginx restart fi
実行されると以下のようなログが出力されます。標準出力を/dev/nullなどに捨てるようにしていないので、同じ内容のメールが飛んできました。
Upgrading certbot-auto 0.8.1 to 0.9.3... Replacing certbot-auto... Creating virtual environment... Installing Python packages... Installation succeeded. Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for 206rc.net Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0004_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0004_csr-certbot.pem Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for ik1-301-10676.vs.sakura.ne.jp Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0005_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0005_csr-certbot.pem ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/206rc.net.conf ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- new certificate deployed without reload, fullchain is /etc/letsencrypt/live/206rc.net/fullchain.pem ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/ik1-301-10676.vs.sakura.ne.jp.conf ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- new certificate deployed without reload, fullchain is /etc/letsencrypt/live/ik1-301-10676.vs.sakura.ne.jp/fullchain.pem ------------------------------------------------------------------------------- Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/206rc.net/fullchain.pem (success) /etc/letsencrypt/live/ik1-301-10676.vs.sakura.ne.jp/fullchain.pem (success) Stopping nginx: [ OK ] Starting nginx: [ OK ]
SSLサーバ証明書を確認したところ、発行日が2016年11月1日、有効期限が2017年1月30日に更新されていました。最初だけ手間ですけど、それ以降は手間いらずで良いですね。