アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【ApacheDebian
LetsEncrypt/certbotの証明書自動更新がエラーになる場合
POSTED BY
2025-09-17

無料SSLサーバ証明書Let's Encryptの導入に成功し安心していたところ期間経過後突然安全でないサイト扱いされて「え?」となることも少なくないというかしょっちゅう。

Let's Encrypt証明書の有効期限はせいぜい3ヵ月なので、自動更新がエラーになると当然ブラウザーではじかれる。原因は色々あるが、まずはエラーログを見てみる。

/var/log/letsencrypt/letsencrypt.log

2025-09-17 01:51:04,319:DEBUG:certbot.renewal:Traceback was:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/certbot/plugins/standalone.py", line 76, in run
    address, self.http_01_resources)
  File "/usr/lib/python3/dist-packages/acme/standalone.py", line 189, in __init__
    BaseDualNetworkedServers.__init__(self, HTTP01Server, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/acme/standalone.py", line 108, in __init__
    raise socket.error("Could not bind to IPv4 or IPv6.")
OSError: Could not bind to IPv4 or IPv6.
certbot.errors.StandaloneBindError: Problem binding to port 80: Could not bind to IPv4 or IPv6.

80番ポートがbindできなくてエラーになっている。それはそのはず、Apacheが使っているんだから。昨今、80番ポートをListenして良いことは無いので、切ってしまえばいい。

/etc/apache2/ports.conf

#Listen 80

コメントアウトして、Apacheを再起動してから、手動でcertbotを実行する。

/etc/init.d/apache2 restart

certbot renew

2025-09-17 11:38:39,411:DEBUG:certbot.renewal:no renewal failures

証明書は無事更新されたようだ。再度Apacheを再起動すれば、SSLが復活。

/etc/init.d/apache2 restart

当方はこれで、以降自動更新のエラーは出なくなった。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】