OS: Ubuntu Server 16.04.5 LTS
certbot 0.26.1
嘗て取得したサーバ証明書の有効期限が30日を切り更新の実施が可能になったからをこれを実施しようというものである。30日以上の期限を残していても force-renewal
サブコマンドで以って強制的に更新することは可能であるけれども、今般はセオリー通り、renewal
サブコマンドによる通常の更新なのである。
$ sudo certbot certificates (snip) Found the following certs: Certificate Name: www7390uo.sakura.ne.jp Domains: www7390uo.sakura.ne.jp Expiry Date: 2019-01-13 16:41:16+00:00 (VALID: 29 days)
然し乍らいざ証明書を更新する段になって改めて有効期限を確認すると89日間になっていてまったく魂消た。知らぬ間に更新が済んでいた模様である。此は如何に、と思案し調べるとどうやらsystemdで以って自動的に更新されるよう手配されていたようである。関わりのあるユニットファイルは2つで、それぞれ下記に配されている模様である。
/lib/systemd/system/certbot.timer /lib/systemd/system/certbot.service
certbot.service
には証明書を更新するコマンドが記述されており、其の内容は /usr/bin/certbot -q renew
という具合である。このコマンドを実行するタイミングは certbot.timer
によって支配されており、毎日0時と12時に0~43200秒間のランダムな秒数だけ待機してから発動するよう計画されている。
$ systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Tue 2018-12-18 08:43:21 JST 6h left Mon 2018-12-17 19:54:17 JST 5h 56min ago certbot.timer certbot.service
更新の際にはLet’s Encryptのvalidation serverからアクセスがあるから、厳正なアクセス制限を施している場合は更新の妨げにならぬようアクセスを許可してやらねばならない。IPアドレスは13.58.30.69、34.213.106.112、52.29.173.72、64.78.149.164、66.133.109.36の少なくとも5つが観測された。
またSystemdを採用していないLinuxディストリビューションの為にCRONで以って同等の更新処理がなされるよう拵えてあった。こうして知らぬ間にサーバ証明書が更新されるのであるけれども、Webサーバを再起動しないと新たな証明書が有効にならないから気に留めておかねばならない。
$ cat /etc/cron.d/certbot # /etc/cron.d/certbot: crontab entries for the certbot package (snip) 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew