経緯
4月8日にシュガータウンの証明書が切れるというのは事前に知っていましたが、自分の中では自動更新されるものだと思っていたので無視していました。
ところが、最近になってLet's Encryptからその旨のメールが来ていました。
これは更新に失敗しているか、そもそも自動更新する設定になっていないかのどちらかです。
原因
Webサーバがポート443のみ受け付ける設定になっていたため。
(80番ポートを使わないor別のサービスが動いている状態)
解決策
certbotをstandaloneモードで設定する(変更前:おそらくwebrootモード)。
ただし、standaloneモードは80番ポートを使うため、稼働中のサービスがあれば一時的に落とす必要があります。
実行
以下のコマンドを実行しただけでrenewできました。
sudo certbot renew --standalone
もしくは、/etc/letsencrypt/renewal/*.conf
内にauthenticator = standalone
を記述すれば、standaloneモードでの更新となります。
(--standaloneオプションでrenewした場合はconfigが既に書き換わっているかもしれません)
あとはこれをcronなり適当にすればよさそうです。
おまけ:--pre-hook
や--post-hook
でrenew時に何かすることも可能なようです。
2022/2/20 追記
Ubuntu 20の場合、
sudo systemctl list-timers
をしてやると、すでにsnap.certbot.renew.service
が登録されています。(つまり、証明書を自動更新する設定が元から入っています)
/etc/letsencrypt/renewal/*.conf
内に、
pre_hook = (80番ポートを使用するサービスを停止するコマンド)
post_hook = (80番ポートを使用するサービスを開始するコマンド)
を追記するのが手っ取り早いです。
参考記事
Let's Encryptでstandaloneからwebrootに設定変更する
Certbotスタンドアロンモードを使用して、CentOS 7でSSL証明書を暗号化して取得する方法