Let’s Encryptで作成した証明書の更新をしてみました。

Table of Contents

nginxの停止

更新時に80/443ポートを使用するため、プロキシサーバとして使用しているnginxを停止します。

$ systemctl stop nginx

更新

cerbot renew コマンドを使用します。
まずは --dry-run モードでリハーサルを実施します。

$ certbot renew --dry-run

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/mamansoft.net.conf
-------------------------------------------------------------------------------
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/mamansoft.net/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)

問題なさそうなので、 --dry-run なしで実行します。

$ certbot renew

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/mamansoft.net.conf
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/mamansoft.net/fullchain.pem
-------------------------------------------------------------------------------

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/mamansoft.net/fullchain.pem (success)

nginxの起動

nginxを起動します。

$ systemctl start nginx

期限が更新されたことを確認します。

無停止更新したい場合

Webrootプラグインを使用するとnginxを停止せずに更新できます。
ただ、証明書作成時にWebrootプラグインを使用していることが条件です。 --standalone で作成した場合は作り直す必要があります。

ユーザーガイド - Let’s Encrypt 総合ポータル

そうしないと以下のようなエラーになります。

$ certbot renew --webroot --dry-run
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/mamansoft.net.conf
-------------------------------------------------------------------------------
2017-01-22 14:23:07,185:WARNING:certbot.renewal:Attempting to renew cert from /etc/letsencrypt/renewal/mamansoft.net.conf produced an unexpected error: Missing command line flag or config entry for this setting:
Select the webroot for mamansoft.net:
Choices: ['Enter a new webroot']

(You can set this with the --webroot-path flag). Skipping.
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/mamansoft.net/fullchain.pem (failure)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)
1 renew failure(s), 0 parse failure(s)

私の場合、無停止が必須では無かったため作り直さずにnginxを停止して更新しました。

総括

Let’s Encryptで作成したSSL証明書の期日を更新しました。
これから作られるのであれば、Webrootプラグインで証明書を作った方がいいと思います。