運営していたマストドンインスタンスのSSL証明書をLet’s Encryptを利用していたのですが、CRONにしかけた定期更新で失敗していました。
試しに手動で実行したところ、次のようなメッセージが表示され失敗していしまいます。
1 |
Attempting to renew cert from /etc/letsencrypt/renewal/everydon.com.conf produced an unexpected error: Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping. |
原因と対処法
ググって調べたところ、原因はNginx起動中だと更新がうまくいかないためとのことでした。
今までのCRONの設定では、更新したあとにNginxを再起動する順序にしていたので、この現象が発生しました。
なので、
- Nginx停止
- Let’s Encryptの更新
- Nginx開始
という順序で行ったところ正常に更新できました。コマンドにすると以下のような感じです。
1 2 3 |
$ sudo systemctl stop nginx $ ~/certbot-auto renew $ sudo systemctl start nginx |
CRONには例えば次のように書きます。
1 |
0 6 * * 6 sudo systemctl stop nginx && ~/certbot-auto renew && sudo systemctl start nginx |
スポンサーリンク