世界を旅して暮らしたい放浪エンジニアブログ

【技術メモ】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証明書更新に気をつけてください。

前のページ

次のページ

Profile

なかむ🇭🇰Webデベロッパー

なかむ🇭🇰Webデベロッパー

香港在住4年目になるWEBエンジニアのなかむです。 現在は、LaravelやRailsを利用したWEB開発を中心にエンジニアをしています。 顧客は全て日本の企業になります。リモート開発にて各企業様の支援を行なっております

プロフィール詳細はこちら

Latest Posts