yujiro's blog

エンジニアリング全般の事書きます

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

参考

プラグインの一覧は下記みると違いがわかる

https://letsencrypt.jp/docs/using.html