1. はじめに
以下の記事で導入した certbot コマンドですが、いつの頃からかエラーが発生していました。
こうなると、サーバー証明書の更新が失敗して、正常にWebサイトが表示されません。
2. 原因
以前の記事では、以下のようにシンボリックリンクを作成していました。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
ところが、いつの間にか python3-certbot というパッケージが、/usr/bin/certbot を上書きしてしまったようで、/usr/bin/certbot は、/usr/bin/certbot-3 のシンボリックリンクになっていました。
/usr/bin/certbot-3 を実行するとエラーが発生するのも気になりますが、今回は関係なさそうなのでとりあえず放っておきます。
3. 対応
今回問題が起きた CentOS 8 では、/etc/cron.d/letsencryp ファイルに certbot コマンドを記述して定期実行させ、サーバー証明書を更新させていました。
その certbot コマンドの部分は、今まで /usr/bin/certbot と記述していたのですが、ここを /var/lib/snapd/snap/bin/certbot に書き換えました。
一部抜粋しますと、こんな感じです。
0 1 4 * * root /var/lib/snapd/snap/bin/certbot renew \
--cert-name www.example.com \
--pre-hook "systemctl stop httpd.service" \
--post-hook "systemctl start httpd.service"
これで、しばらく様子を見ようと思います。
4. おわりに
Certbot の公式ページ「Certbot Instructions | Certbot」には、今だに /usr/bin/certbot というシンボリックリンクを作成する記述がありますが、これは微妙なところです。そのうちまた python のパケージに上書きされてしまう可能性があります。