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)
図1. 証明書の情報

然し乍らいざ証明書を更新する段になって改めて有効期限を確認すると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
図2. 更新後の証明書情報

コメントする

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