【技術メモ】Let’s Encryptの自動更新に失敗した話
Let’s Encryptの自動更新設定をしていたつもりが失敗しており、サービスが見れなくなっていました。同じ失敗を起こさないようにまとめておきたいと思います。
[ 目次 ]
はじめに
こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
今回はLet’s Encryptの自動更新設定をしていたつもりが、失敗、サービスが見れなくなったというお話です。
同じ失敗を起こさないようにまとめておきたいと思います。
環境ですが、対象サーバーのOSはCentOS7で、nginxをWebサーバーとして利用しています。
Let’s Encryptって?
無料のSSL証明書です。
個人サービスや中小企業のサービス、ステージング環境などで利用している方も多いのではないでしょうか!?
私も無料なので利用することがあります。
詳しくは以下の記事にて、説明をご確認ください。
【無料SSL入門】「Let’s Encrypt」とは?設定で挫折しない!使い方解説
何に失敗したか
Let’s Encryptの証明書の更新は、certbotコマンドからできます。
そのコマンドが良くなかったようです。
/etc/crontab
で定期的に更新処理を実行していました。変更までの設定は以下です。
0 0 * * 0 root /bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" >> /dev/null 2>&1
何がダメだったかというと、nginxを停止してから/bin/certbot renew
で更新しようとするとエラーが出ます。
Webサーバーを起動したまま更新するのが正しいようです。
--pre-hook "systemctl stop nginx"
が失敗でした。
※ 過去にググって調べていた時は、停止してから更新するような記事がいっぱいあったような・・・
修正方法
以下のようにcrontabの設定を修正しました。
0 0 * * 0 root /bin/certbot renew --post-hook "systemctl restart nginx" >> /dev/null 2>&1
/bin/certbot renew
でSSL証明書を更新した後、nginxを再起動しています。
SSL証明書の期限は3ヶ月です。気長に待って3ヶ月後にチェックしてみたいと思います。
最後に
皆さんもLet’s EncryptのSSL証明書更新に気をつけてください。