DNS 検証モードの Nginx 構成で Let's Encrypt をインストールしました。自動更新のドキュメントの指示に従って、以下のエントリを追加しました。
15 3 * * * /usr/bin/certbot renew --quiet
しかし、これは機能しなかったため、何が起こったかを確認するためにコマンド ラインで実行しました。以下のエラーが表示されます。ポート 80/443 は Nginx によって使用されており、手動で更新するときに停止する必要があることは理解していますが、AUTO RENEW モードで設定するにはどうすればよいのでしょうか。つまり、この cronjob の前に stop Nginx を追加し、その後に restart を追加するのでしょうか。ただし、Nginx に障害が発生するとダウンタイムが長くなるため、cronjob でこれを行うのは少し危険です。
[centos]# /usr/bin/certbot renew --quiet
Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an
unexpected error:
Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)
何か案が?
答え1
certbotを次のように実行します--nginx
または--webroot
ドキュメントに記載されているように、パラメータを設定すると、開いている Web サーバーを起動する代わりに、実行中の nginx が使用されるようになります。
certbot renew --quiet --nginx
または
certbot renew --quiet --webroot --webroot-path /var/www/html
--deploy-hook
更新が成功した後、パラメータを使用して nginx をリロードすることも忘れないでください。
注意: まだ nginx プラグインをインストールしていない場合は、以下のコマンドでインストールする必要があります。
yum install python-certbot-nginx