SSL証明書の自動更新が上手くいかなかった理由

6月 7, 2018AmazonLinux_CentOS,Lightsail,OperatingSystem

Let’s Encryptを使ったSSL証明書の自動更新が上手くいなかったときの調査

今日は、Let’s Encryptで取得したSSL証明書を自動更新する方法と、3ヶ月後経ってなぜか自動更新がされていなかった事例を調査しましたのでご紹介します。

SSL証明書の自動更新をrootのcronに組み込む

  • 先ずLet’s Encryptを使ったSSL証明書の取得~WordPressへの登録については、以下の記事を参照ください。

やさしいウェブのHTTPS化について

  • 次にSSL証明書の自動更新について、ご説明します。Let’s Encryptで取得したSSL証明書は、90日で有効期限が切れてしまいます。そのため、有効期限が切れる前に証明書の更新を行う必要があります。
  • 有効期限が近づくと、Let’s Encryptからメールで警告が届きますが、うっかり忘れないように、cronを使って自動で更新するようにしましょう。以下は、毎月SSL証明書を更新する設定になります。
  • cronの設定は、左から「分」「時」「日」「月」「曜日」になります。月が* 、日が1 、時が1 、分が1, 2, 3, 4 となっているため、毎月1日の1時1分から更新が行われます。(ここでは、vi の使用方法は省略します)
$ sudo crontab -e
1 1 1 * * /tmp/letsencrypt/letsencrypt-auto renew
2 1 1 * * cp /etc/letsencrypt/live/ドメイン名/privkey.pem /opt/bitnami/apache2/conf/server.key
3 1 1 * * cp /etc/letsencrypt/live/ドメイン名/fullchain.pem /opt/bitnami/apache2/conf/server.crt
4 1 1 * * /opt/bitnami/ctlscript.sh restart apache

SSL証明書の自動更新に失敗した理由

Let’s Encryptから期限切れの予告メールが届いた

  • ウェブのSSL対応から3ヶ月後、なぜかSSL証明書の自動更新が行われないことに気が付きました。自動更新が上手くいかなかった理由は何だと思いますか?
  • 以下は、Let’s Encryptからの期限切れの予告メールです。1日後に期限が切れることを通知しています。

SSL証明書の自動更新に失敗した理由は?

  • 実は、cronに仕込んでいた/tmp/letsencrypt/letsencrypt-auto renew のコマンドに原因がありました。
  • gitを使って/tmpにletsencryptをcloneしましたが、惜しくも、3ヶ月後は/tmpからletsencryptは消えていました…。

cronの設定を見直そう

  • 先ず仮想マシンの/tmpにコピーしたletsencryptが消えないように、/tmpから移動します。ここでは、ホームディレクトリの/home/bitnami配下に移動させています。
$ cd /tmp
$ mv letsencrypt ~
$ cd
$ ls letsencrypt/letsencrypt-auto
letsencrypt/letsencrypt-auto
$
  • 次に、cron設定を変更します。以下、変更後のrootのcron設定内容です。
$ sudo crontab -e
1 1 1 * * /home/bitnami/letsencrypt/letsencrypt-auto renew
2 1 1 * * cp /etc/letsencrypt/live/kaede-pgstudio.net/privkey.pem /opt/bitnami/apache2/conf/server.key
3 1 1 * * cp /etc/letsencrypt/live/kaede-pgstudio.net/fullchain.pem /opt/bitnami/apache2/conf/server.crt
4 1 1 * * /opt/bitnami/ctlscript.sh restart apache
  • これで、次の3ヶ月後は大丈夫でしょう!