ブログに記事を追加しようと思い、WordPressにログインしようと思ったら「この接続ではプライバシーが保護されません」と表示されている。

Let’s Encryptの更新(certbot renew)をかけるのを忘れて、Let’s Encryptの証明書の有効期限が切れてしまうと、Webサイトにこのような画面が表示されます。
通常なら期限切れが近くなると、Let’s Encryptの設定時に登録したメールアドレスにメールで通知が来るのだが、そのメールもチェックしていませんでした。
すぐさまサーバーにSSH接続して「certbot renew」を実行して証明書の有効期限を更新し、各種サービスを再起動してサイトのSSL証明書を有効化させましたが、今後は二度とこのような失態を繰り返さないようにLet’s Encryptの更新をcronで自動化する。
※動作確認環境
CentOS 7.6
Let’s Encryptの更新を行うシェルスクリプトを作成
まずシェルスクリプトを置いておくディレクトリを作成
※これはどこでもOKです。
# mkdir /tmp4SSL
シェルスクリプトを作成する。
# vi /tmp4SSL/SSLRenewCron.sh
#!/bin/sh
/usr/bin/yum -y --enablerepo=epel install certbot python2-acme
/usr/bin/certbot renew
/usr/bin/systemctl restart proftpd
/usr/bin/systemctl restart dovecot
/usr/bin/systemctl restart postfix
/usr/bin/systemctl restart php-fpm
/usr/bin/systemctl restart nginx
※再起動するサービスは環境によって書き換えてください。(SSLに対応させているサービスは全て再起動が必要です。)
実行権限を付与
# chmod +x /tmp4SSL/SSLRenewCron.sh
これでLet’s Encryptの更新を行うシェルスクリプトが完成です。
cronに登録
先ほど作成したシェルスクリプトをcronに登録して自動実行します。
cronを設定するためのエディタを開きます。
# crontab -u root -e
以下の設定内容を追加します。
毎週月曜日と木曜日のAM 4:10に「/tmp4SSL/SSLRenewCron.sh」を実行
4 10 * * 1,4 /tmp4SSL/SSLRenewCron.sh
Esc→:wq→Enterでエディタを閉じます。(※viの場合)
確認します。
# crontab -l -u root
4 10 * * 1,4 /tmp4SSL/SSLRenewCron.sh
OKです。cronの登録が完了しました。
まとめ
うっかりミスによるLet’s Encryptの期限切れを防ぐために、SSL証明書の更新作業はcronで自動化しましょう。
Let’s Encryptの設定時に登録したメールアドレスのメールチェックも忘れずに。もし何かしらの事情でcronでの自動更新作業に失敗しても、有効期限切れが迫ったドメインがある場合はメールで通知してくれます。
以上で解決です。

