Let's Encrypt で Nginx をリスタートをかけずに証明書を更新する
以下作業メモです。
Let's Encrypt でSSL 化されているサーバーの証明書の更新をしようと思ったらエラった。
Problem binding to port 443: Could not bind to IPv4 or IPv6.
Let's Encryptのstandalone プラグインを使うとnginx が起動したまま鍵を更新することができないので webroot プラグインを使う。
既にstandalone で入れてしまった場合は
/etc/letsencrypt/archive/[domain]/ /etc/letsencrypt/live/[domain]/ /etc/letsencrypt/renewal/[domain]/
をふっとばすか、不安だったらどこかにmv しておく。
下記コマンドで鍵を新規作成する。 domain.com と example@example.com の部分は変えるように。
$ /etc/letsencrypt/certbot-auto certonly --webroot -w /var/www/domain.com/ -d domain.com -d www.domain.com -m example@example.com --agree-tos -n
あとはcron に以下を登録しておけばOK。ユーザーはroot にしておく。証明書の期限は3ヶ月だけど、一応毎月1日の0時に更新されるようにした。
00 00 01 * * root /etc/letsencrypt/certbot-auto renew --force-renewal && service nginx reload
参考
プラグインの一覧は下記みると違いがわかる