Let’s Encryptの証明書の有効期限は90日と短いため、CentOS 7などのLinux環境では、通常はcronやsystemd.timersを使って証明書の自動更新を設定しますが、環境によっては自動更新はせずに手動で更新を行いたいケースもあるでしょう。
そこでここでは、CentOS 7でLet's Encryptの証明書を手動で更新する方法を紹介します。
目次
動作環境
この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
Let’s Encryptの証明書を手動更新する
自動更新が設定されていない場合、更新期限まで30日を切ると以下のような内容でメールが送られてきます。
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.
CentOS 7で、Let's Encryptの証明書を手動更新するときは、以下のコマンドを実行することで、期限まで30日未満の証明書が更新されます。
# certbot renew
期限までに30日以上の猶予がある場合に、強制的に証明書を更新したいときは、以下のコマンドを実行します。
# certbot renew --force-renewal
更新処理が始まると、以下のようなメッセージが出力されます。
メッセージの最終行あたりに「Congratulations,」と表示されていれば、更新成功です。更新に要する時間は証明書の数にもよると思いますが、1つだけだと15秒ぐらいで終わりました。
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)
-------------------------------------------------------------------------------
証明書の更新が完了したら、Webサーバーを再起動します。
# systemctl restart nginx
最後に、Webブラウザでサイトを開き、証明書が更新されていることを確認します。
あとがき
Let’s Encryptは無料で利用できる上に、更新も楽で大変助かります。