こんにちは、@Manabu です。
私が運用しているサイトの中に、CerbotのSSL証明書を使用しているサイトがあります。
今まで、自動更新を設定しておらず、メールで通知が来たときに有効期限の確認方法がわからなかったので、調査した内容をまとめておきます。
この記事は、以下のような方におすすめです。
ぜひ参考にしてください。
はじめに
この記事に関連する概要をまとめます。
Cerbotとは?
Certbotは、無料のSSL/TLS証明書を提供するLet’s Encryptプロジェクトが開発したオープンソースのツールです。
Let’s Encryptの提供するSSL証明書には、90日間の有効期限があり、定期的な更新が必要です。
有効期限内に更新しなかった場合、HTTPS通信ができなくなりサイトがアクセスできなくなる可能性があります。
有効期限を確認しようと思ったきっかけ
有効期限が近づくと、以下のようなメールが届きます。
内容は、SSL証明書の有効期限が一週間後に近づいているので更新しましょうという内容なのですが、私のサイトはこのメールが届く数日前に更新したばかりでした。
そのため、正しく更新できているのか確認するために今回の調査を行いました。
有効期限の確認コマンド
以下のコマンドを実行することで、現在のSSL証明書の情報を確認することができます。
sudo certbot certificates
このコマンドで、以下の情報が出力されます。
- Certificate Name:証明書に関連付けられた名称
- Serial Number:シリアル番号
- Key Type:暗号キータイプ
- Domains:証明書に含まれるドメイン名
- Expiry Date:証明書の有効期限
- Certificate Path:証明書ファイルのパス
- Private Key Path:秘密鍵ファイルのパス
有効期限を確認すると、10月になっており、正しく更新できていたことが確認できました。
メール自体は、有効期限が更新されていても送信されるように設定されているようですね。
Cerbot自動更新の設定方法
今回は、EC2(Amazon Linux2023)での自動更新方法について紹介します。
以下のコマンドを順番に実行します。
// cronのインストール
sudo dnf install cronie
// cronの起動・自動起動の設定
systemctl start crond
systemctl enable crond
// crontabコマンドでCerbotの自動更新を設定
crontab -e
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload httpd"
cronジョブには、Cerbotの更新処理とApacheの再起動を実行させるよう設定します。
ジョブを実行させるタイミングは、毎日朝の3時に設定しています。
Cerbotのrenewコマンドは、証明書の有効期限が30日以上残っている場合には何も行わないため、毎日実行してもサーバに負担をかけることは少ないです。
まとめ
証明書の有効期限を確実に守るためには、頻繁なチェックが望ましいですが、サーバーの負荷を考慮して頻度を調整することも可能です。
更新失敗のリスクを軽減するため、適切な頻度でチェックを行い、万が一のトラブルに備えることが重要です。