Let’s Encryptの証明書の有効期限は90日と短いため、通常はcronやsystemd.timersを使って証明書の自動更新を設定します。わたしもsystemd.timersを使って自動更新を設定しておいたのですが、ある日、次のようなメールが「Let's Encrypt Expiry Bot 」から届きました。
Your certificate (or certificates) for the names listed below will expire in
20 days (on 12 Jun 18 18:36 +0000). Please make sure to renew
your certificate before then, or visitors to your website will encounter errors.
これは、証明書の期限がもうすぐ切れますよ、という通知メールです。自動更新を設定しているのになんでだろうと調べてみたところ、証明書発行時以降にWebサーバーのドキュメントルートを変更していたことが原因でした。
というわけで「/etc/letsencrypt/renewal」にある設定ファイルの記述されているドキュメントルートを修正後、証明書を手動で更新しました。
ここでは、CentOS7でLet's Encryptの証明書を手動で更新する方法を紹介します。
更新作業
以下のコマンドを実行すると、期限まで30日未満の証明書が更新されます。
certbot renew
更新処理が始まると以下のようなメッセージが出力されます。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/4thsight.xyz.conf
-------------------------------------------------------------------------------
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for 4thsight.xyz
http-01 challenge for www.4thsight.xyz
Waiting for verification...
Cleaning up challenges
-------------------------------------------------------------------------------
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/4thsight.xyz/fullchain.pem
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/4thsight.xyz/fullchain.pem (success)
-------------------------------------------------------------------------------
最終行あたりに「Congratulations,」と表示されていれば、更新成功です。更新に要する時間は証明書の数にもよると思いますが、1つだけだと15秒ぐらいで終わりました。
証明書の更新が完了したら、Webサーバーを再起動します。
systemctl restart nginx
最後に、Webブラウザでサイトを開き、証明書が更新されていることを確認します。
あとがき
Let’s Encryptは無料で利用できる上に、更新も楽で大変助かります。