Let's Encrypt の certbot renew を設定した覚書
(FreeBSD / Apache)

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 の仕組みを使った方が良いのではないか。

ここか?

/etc/periodic/daily/999.local
#!/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. とある通り、スクリプトを読み進めても、何か違うようだ。

そこで、スクリプトから参照されている、以下を見てみる。

/etc/defaults/periodic.conf
#!/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 を追加してみた。

/usr/local/etc/periodic/daily:
-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

/usr/local/etc/periodic/daily/443.certbot
#!/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 に来たメールを見て、正しく実行されているらしいことを確かめた。

以上


index