CentOS – Let’s Encryptの証明書をcronで自動更新する

はじめに

Let’s Encryptより以下のメッセージを受け取ったので、証明書を自動更新できるように設定する。

Your certificate (or certificates) for the names listed below will expire in 20 days (on 15 Jun 18 00:59 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors.

証明書の手動更新

Let’s EncryptのSSL証明書の更新は「certbot renew」コマンドで行う。

letsencryptディレクトに移動して、まずはテストオプション「–dry-run」をつけてコマンドを実行。

# cd /etc/letsencrypt
# ./certbot-auto renew --force-renew --dry-run

成功すれば以下のメッセージが表示される。

Congratulations, all renewals succeeded. The following certs have been renewed:

問題なければ、テストオプションを外して再度コマンド実行。

# ./certbot-auto renew --force-renew

有効期間を確認。

# openssl x509 -in /etc/letsencrypt/live/[ドメイン名]/fullchain.pem -noout -dates
notBefore=May 26 04:47:36 2018 GMT
notAfter=Aug 24 04:47:36 2018 GMT

更新が確認できていれば、サーバを再起動させる。

# service httpd restart

自動更新設定

上記コマンドをcronで自動実行させる。

まずcron設定の編集画面を開く。

$ crontab -e

以下の処理を追加(毎月の1日、04時00分に実行)。サーバ再起動のコマンドもお忘れなく。

00 04 01 * * /etc/letsencrypt/certbot-auto renew --force-renewal && sudo service httpd restart

なお、cronでsudoコマンドが使えるように、SSHユーザのTTY要求を解除しておく必要あり。

# visudo
# Defaults    requiretty       ← コメントアウト
Defaults:[SSHユーザ名] !requiretty  ← 追加

以上で自動更新の設定完了!

念のため、cronが起動していることも確認しておきましょう。

$ /etc/rc.d/init.d/crond status
crond (pid  4248) を実行中...

「crond は停止しています」と表示された場合は、以下のコマンドでcronを起動する。

$ /etc/rc.d/init.d/crond start

所感

Let’s Encrypt快適ですね。

Sources

兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です