Let’s Encryptから取得したサーバ証明書の更新

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

参考:
Cerbot cron job?
Automated Renewals
systemd/タイマー

Similar Posts:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください