パッケージマネージャからインストールしたLets Encrypt(Certbot)で証明書の更新をCronで実行する必要はない
2019-10-29 06:53:43 +0900
まとめ
- 各Linuxのディストリビューションのパッケージマネージャー(aptとかyumとか)からインストールするとすでに更新処理(certbot renew)はCronで自動化されているため、自前で設定する必要はありません。
- ただし、HTTPサーバによってはreloadかrestartをしないと証明書の内容が更新されないので、それは自前で行う必要がある。
もうちょっとだけ詳しく
- 各ディストリビューションでどのバージョンから自動更新処理はがついていることが下記URLにも記載されている。こちらを参照しよう。
- どこで実行されているかわからんときや、自分の環境では自動化されているかどうかを確認したい場合は、/etc/crontab だったり、 systemctl list-timers でチェックしてみましょう。
実際に利用しているUbuntu18.04では、下記内容がCronにしれっと登録されていた。
# /etc/cron.d/certbot: crontab entries for the certbot package # # Upstream recommends attempting renewal twice a day # # Eventually, this will be an opportunity to validate certificates # haven't been revoked, etc. Renewal will only occur if expiration # is within 30 days. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
- このCronを読んで貰えればわかるけど、証明書の更新はしてくれるが証明書を利用しているHTTPサーバのReloadやRestartはされないので、証明書の再読み込みに必要であればそれは自前で行う必要がある。
思うところ
- 最近からそうなったんだろなーとは思ったけど、これで理由が理解できた。
- 殆どの利用ケースではパッケージマネージャ経由でCertbotはインストールしているだろうし、よくわからない人はパッケージマネージャ経由で入れておけという感じです。
- 思考停止状態でとりあえずでコピペ設定するのはやめよう。設定するならHTTPサーバのReloadだけで十分だし、都合が悪いので自前で叩く場合は、既存のCron設定は止めよう。