【Let's Encrypt】で証明書の有効期限切れまでの期間をちょっとだけ長めに取る話
無料でサーバー証明書を発行できる Let's Encrypt の話し。
Let's Encrypt では有効期間が90日(両端入れだと91日)の証明書が発行されますが、自動更新処理の頻度次第では残り有効期限がちょっと不安になる場面が出てきます。
というのも、Let's Encrypt の証明書更新処理(certbot renew)では、初期設定のままだと、証明書の期限切れまで30日未満にならないと証明書が更新されず、例えば毎月1日と15日とに更新処理をキックした場合、証明書の期限切れまであまり日が無くて、ヒヤっとするシチュエーションが出てくるんですよね。
それが気になるなら certbot の実行頻度を上げれば良いのでしょうが、そもそも、証明書の残り期間に常に余裕を持っておくことはできないのか、と思ったわけです。
結論から言うと、そういう設定は簡単にできて、例えば、常に証明書の有効期限まで30日以上を確保したいなら、
$ sudo vi /etc/letsencrypt/renewal/www.example.com.conf
で、有効期限が47日未満になったら再発行としておいて、
renew_before_expiry = 47 days
cron で certbot renew を毎月1日、15日に動かすよう設定すれば、
00 03 1,15 * * /usr/bin/certbot renew --post-hook "/usr/bin/systemctl reload nginx" 2>&1
Code language: JavaScript (javascript)
これでシステムさえちゃんと動作すれば、証明書の有効期間を最低でも約30日は確保できるし、また、万が一証明書発行処理がコケたとしても、2回はリトライ処理が期待できる、というわけです。
まぁ、実際に証明書発行処理がコケた場合は、サーバー側から飛ばしたエラーメールなどをトリガーに人が運用で再発行処理とかをするとは思うんですが、これくらい時間の余裕があれば、ちょっと心の余裕が生まれるような。
もちろん、初期設定のままでもシステムが正しく動く前提であれば、ネット上のその辺に落ちている設定を入れても問題なさそうですし、また、Let's Encrypt 側の負荷を考えても証明書の発行頻度は低くしたくなるところですが、色々と不安になりがちな方は、こんな感じで「証明書の残り有効期限の設定」と「再発行処理の実行頻度」を合わせて設定することで、自分が安心できる有効期限の確保ができる事は知っておくと良さそうです。