Let's Encrypt の証明書は、90日で期限が切れる。 そこで、自動更新を走らせておくことが勧められている。
以下を参考にする。
ちなみに certbot は、ports の py27-certbot を portinstall している。
% where certbot
/usr/local/bin/certbot
まず以下を実行してみる。
% sudo certbot renew --dry-run
なお、Apache の設定を、/usr/local/etc/letsencrypt の下を直接参照するようにしているので、HAProxy と違い、これだけで問題ないはずである。
問題なさそうなのでさらに次を実行してみる。
% sudo certbot renew
やはり問題なさそうなので、次は cron への追加を検討するが、certbot の説明には、crontab への 1行の追加の例が示されている。 Python で実行時間を散らすようになっている。
一方 FreeBSD のデフォルトの /etc/crontab は以下のようになっており、
(略)
# Perform daily/weekly/monthly maintenance.
1 3 * * * root periodic daily
15 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly
(略)
直接 /etc/crontab への追加でなく、periodic daily の仕組みを使った方が良いのではないか。
ここか?
#!/bin/sh
(略)
# Run the old /etc/daily.local script. This is really for backwards
# compatibility more than anything else.
#
# If there is a global system configuration file, suck it in.
#
if [ -r /etc/defaults/periodic.conf ]
then
. /etc/defaults/periodic.conf
source_periodic_confs
fi
(略)
This is really for backwards compatibility more than anything else. とある通り、スクリプトを読み進めても、何か違うようだ。
そこで、スクリプトから参照されている、以下を見てみる。
#!/bin/sh
(略)
# What files override these defaults ?
periodic_conf_files="/etc/periodic.conf /etc/periodic.conf.local"
# periodic script dirs
local_periodic="/usr/local/etc/periodic"
(略)
おお! /usr/local/etc/periodic というのもあるようだ。
そこで、以下のようになるように 443.certbot を追加してみた。
-r-xr-xr-x 1 root wheel 2746 1月 7 18:36 411.pkg-backup
-rwxr-xr-x 1 root wheel 158 1月 6 23:12 443.certbot
-r-xr-xr-x 1 root wheel 2506 1月 7 18:36 490.status-pkg-changes
-r-xr-xr-x 1 root wheel 1940 10月 10 07:25 dmidecode
↓
#!/bin/sh
# 2018-01-06 nsmrtks
# (see https://certbot.eff.org/#freebsd-apache)
certbot=/usr/local/bin/certbot
[ -x "$certbot" ] && "$certbot" renew
# EoF
時間を散らすようにはなっていないが、一連の daily の途中で実行されるので、少しは時間が散らされることを期待する..
その後、root に来たメールを見て、正しく実行されているらしいことを確かめた。