実現したいこと
Let's Encryptを使ってSSL/TLS証明書を取得しているのですが、本日メールであと数日で有効期限が切れるなどの旨のメールが来ました。
下記のサイトに倣って、取得及び自動更新も行ったのですが、自動更新が行われていない可能性があります。
どこの設定が間違っていたのでしょうか?
・参考サイト
Let's Encrypt
発生している問題・エラーメッセージ
SSL/TLS証明書の自動更新が行われていない可能性があります。
該当のソースコード
・nano /etc/cron.d/letsencrypt-renew
0 0 1 * * root certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
試したこと
systemctl restart cronコマンドを打ちましたが、更新されたか分かりません。
確認方法はありますでしょうか?
cron から届くメールや cron のログファイル ( /var/log/cron 等) に何かエラーは出ていませんか?
例えば、command not found が出ている場合は、cron から実行するコマンドに path が通っていないと思われます。
また、/var/log/letsencrypt に certbot コマンドを実行した際のログが記録されていると思いますが、ログファイルに何かエラーメッセージは出ていませんか。
下記のコマンドで関連しているログを抽出しました。
ログが多いのですが、恐らく証明書は発行されているのですが更新作業が行われていないのかなと思いましたが、どうでしょうか?
cat /var/log/letsencrypt/letsencrypt.log
2024-12-01 19:35:56,729:DEBUG:certbot._internal.display.obj:Notifying user: The following certificates are not due for renewal yet:
2024-12-01 19:35:56,729:DEBUG:certbot._internal.display.obj:Notifying user: /e tc/letsencrypt/live/app.com/fullchain.pem expires on 2025-02-22 (skipped)
2024-12-01 19:35:56,729:DEBUG:certbot._internal.display.obj:Notifying user: No r enewals were attempted.
2024-12-01 19:35:56,729:DEBUG:certbot._internal.display.obj:Notifying user: - -
2024-12-01 19:35:56:56,729:DEBUG:certbot._internal.display.obj:Notifying user: 次の証明書はまだ更新期限ではありません:
2024-12-01 19:35:56,729:DEBUG:certbot._internal.display.obj:Notifying user: /e tc/letsencrypt/live/app.com/fullchain.pemの有効期限は2025-02-22です(スキップ)。
2024-12-01 19:35:56,729:DEBUG:certbot._internal.display.obj:Notifying user: 更新は試行されませんでした。
サイトの方で証明書の確認を行ったのですが下記の表示をされていますのですが、これは以前発行された証明書が切れるメールが来たのでしょうか?
発行日 2024年11月24日日曜日 15:07:55
有効期限 2025年2月22日土曜日 15:07:54
参考:https://qiita.com/portfoliokns3/items/b356a79dbd68a3223e30
!追記!
2024年11月24日に特にSSL取得に関することを行った記憶がありません。
もしかしたら毎月23日か24日に更新されるという可能性はありますか?
/etc/cron.d/letsencrypt-renewの書き方だと毎月1日に更新されると参考サイトに記載されていたのですが・・・
> 下記のコマンドで関連しているログを抽出しました。
と、2024/12/04 12:06 にコメントされていますが、掲載されているログは、2024-12-01 19:35:56 です。
ログはその瞬間の物を見ないと意味ないですが、
2024-12-01 19:35:56 に certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" のコマンドを実行したという意味でしょうか?
> もしかしたら毎月23日か24日に更新されるという可能性はありますか?
そのように設定したのなら、更新されたのかも知れません。そのように設定もせず、手動でもその時刻に実行していないのなら、あり得ないでしょう。
もしくは貴方以外の人が実行したか。
> /etc/cron.d/letsencrypt-renewの書き方だと毎月1日に更新されると参考サイトに記載されていたのですが・・・
cronについての知識がその程度なら、下記の二択です。
・cronについてちゃんと勉強する
・cronを一切使わない
難しくはないので、「勉強する」の方をお勧めします。
ログを見る限りcertbot renewを行おうとしていて、
更新期限ではないので更新できませんでした
それで更新は結果的に試行されませんでした。
といった内容です。
改めてcronを編集して更新が行われるかを試すために日付と時間を調整して自動更新を試してみて、ログを確認して、翻訳しました。
2024-12-05 00:35:01,861:DEBUG:certbot._internal.display.obj:ユーザーに通知しています: 次の証明書はまだ更新期限ではありません:
2024-12-05 00:35:01,861:DEBUG:certbot._internal.display.obj:ユーザーに通知します: /etc/letsencrypt/live/app.com/fullchain.pemの有効期限は2025-02-22です。
2024-12-05 00:35:01,861:DEBUG:certbot._internal.display.obj:ユーザーに通知します: 更新は試行されませんでした。
2024-12-05 00:35:01,861:DEBUG:certbot._internal.display.obj:ユーザーに通知します: フックは実行されませんでした。
2024-12-05 00:35:01,861:DEBUG:certbot._internal.display.obj:ユーザーに通知します:
2024-12-05 00:35:01,861:DEBUG:certbot._internal.renewal:更新失敗なし
恐らく更新期限が30日以内でなければいけないの(調べた際にそう言った事例があるという可能性)と、2025年2月~とサイトに表示されていた方が現在SSLとして適用されている可能性が高そうな気がします。
30日を切ったために11月24日に自動更新が行われた可能性はありますか?
また勉強不足で申し訳ありません。
勉強しながらこの問題を解決したいと考えております。
とにかく実際に適用されている証明書の期限が正しいです。WEBブラウザからも証明書の期限が見えるはずなので、まずはそれを確認してください。メールが届いた理由はこれらの情報だけだと第三者には分かりません。ちがう証明書を過去に発行してたりするのではないでしょうか? メールにFQDNとか色々書かれてると思うので、しっかり突き合わせてみると良いかと思います。
証明書の残り期間が30日を切らないと新しい証明書が発行されないのはそのとおりで間違いないですし、11月24日に自動更新が行われた可能性が高いとは思いますが(これがcronで自動実行されたなら、一応正しく動いているともいえる)、これも実際にどのようなことが起こったのかは第三者には分かりませんので、ログなどを参考にして自分で調べてみてください。
以前作成して、その後に作り直したのですが、その以前作っていたやつかもしれません。
wwwを付けてドメインSSLを作成したのですが、wwwが必要なくて改めて作成しなおしたのですが、もう一度メールを見直したところwwwが付いていたので以前一度作成していた奴が期限切れになったというメールかもしれません。
あなたの回答
tips
プレビュー