Ubuntu で Let's Encrypt 証明書を自動的に更新する (Certbot + Nginx)

直接実装できる Certbot の自動更新のガイド: crontab の例、Nginx フックの停止と開始、更新の検証、トラブルシューティングの提案が含まれます。

Let’s Encrypt 証明書の有効期限は 90 日間のみです。オンライン サイトでは、証明書の有効期限切れによる HTTPS エラーを回避するために自動更新を構成する必要があります。

crontabを手動で追加する(推奨例)

更新タスクを自分で明示的に管理したい場合は、root ユーザーとして追加します。

1
sudo crontab -e

次の行を追加します (毎日午前 3 時に 1 回実行)。

1
0 3 * * * certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" >> /tmp/certbot-renew.log 2>&1

このコマンドの意味は次のとおりです。

  • 0 3 * * *: 毎日 03:00 に実行
  • certbot renew: 有効期限が近づいている証明書を確認して更新します (実際には毎日更新されるわけではありません)。
  • --pre-hook: 80/443 ポートの競合を避けるために、更新前に Nginx を停止します (スタンドアロン モードで一般的)
  • --post-hook: 更新後のNginxの起動
  • >> /tmp/certbot-renew.log 2>&1: トラブルシューティングを容易にするためにログをファイルに追加します

最初に更新のシミュレーションを行うことをお勧めします

スケジュールされたタスクを追加した後、まずプロセスが利用可能かどうかを手動で確認します。

1
sudo certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" --dry-run

シミュレーションが正常に更新されたことを確認した後、長期実行のためにスケジュールされたタスクに渡されます。

共通の注意点

  1. webroot または nginx プラグインを使用している場合、多くのシナリオで Nginx を停止する必要はありません。代わりに、更新後に構成をリロードすることもできます。
1
certbot renew --deploy-hook "systemctl reload nginx"
  1. certbot renew は、証明書の有効期限が近づいた場合にのみ実際の更新を実行するため、1 日に 1 回実行するのが通常の一般的な方法です。

  2. 長期的な運用とメンテナンスを容易にするために、ログ ディレクトリを長期的に追跡可能な場所 (/var/log/letsencrypt/ など) に変更することをお勧めします。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。