Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

CRONの自動更新がうまくいかない問題を調査(原因不明)(信憑性は低いので注意)

Posted at

注意事項

この記事は、AWSの運用停止の方針となったため、調査継続が困難となり、原因が判明していません。そのため記載内容の信憑性に乏しいです。しかし途中まで記録・作成したものなので、せっかくなので公開しています。

背景

  • この記事は、以下の記事で起こったことを調査したものになります。
    https://qiita.com/portfoliokns3/items/b356a79dbd68a3223e30
  • Let's EncryptのSSL証明書の有効期限を自動更新するように設定していたものの、自動で更新されていなかったため、その調査をした記事になります。

結論

  • 調査し、原因を突き止めようとしましたが、根本的な原因は判明しておりません。
  • CRONのログを確認したところ、毎時1時と13時にCRONは実行されていたことを確認しました。
  • Certbotのログを確認したところ、ログファイル自体が存在しなかったことを確認しました。

調査①:CRONのログを確認

以下のコマンドで、CRONのログを確認したところ、毎時、1時と13時にCRONが実行されていることを確認した。

sudo vim /var/log/cron
ログの例
Jun 12 01:00:01 ip-***-**-**-*** CROND[22374]: (root) CMD (root certbot renew --no-self-upgrade)
Jun 15 01:00:01 ip-***-**-**-*** CROND[13615]: (root) CMD (root certbot renew --no-self-upgrade)

調査②:Certbotのログファイルを確認

以下のコマンドで、Certbotのログファイルを確認したところ、毎日書き込まれているはずのログファイルが見当たらなかった。

sudo ls -l /var/log/letsencrypt
表示例(量が多いので、一部削除しています)
-rw-r--r-- 1 root root 37410  6月 15 07:30 letsencrypt.log
-rw-r--r-- 1 root root  1632  6月 15 07:29 letsencrypt.log.1
-rw-r--r-- 1 root root  5773  1月  4 06:30 letsencrypt.log.10
-rw-r--r-- 1 root root  9401  1月  4 06:29 letsencrypt.log.11
-rw-r--r-- 1 root root  1632  6月 15 07:27 letsencrypt.log.2
-rw-r--r-- 1 root root  9657  1月  3 11:36 letsencrypt.log.20
-rw-r--r-- 1 root root 14582  1月  2 16:19 letsencrypt.log.29
-rw-r--r-- 1 root root  1632  6月 15 07:27 letsencrypt.log.3
-rw-r--r-- 1 root root 14582  1月  2 16:10 letsencrypt.log.30
-rw-r--r-- 1 root root     0  1月  2 15:43 letsencrypt.log.37
-rw-r--r-- 1 root root 37109  4月  4 10:44 letsencrypt.log.4
-rw-r--r-- 1 root root 40045  4月  4 10:42 letsencrypt.log.5
-rw-r--r-- 1 root root  1128  4月  4 10:41 letsencrypt.log.6
-rw-r--r-- 1 root root 15731  1月  4 14:27 letsencrypt.log.7
-rw-r--r-- 1 root root  9311  1月  4 14:19 letsencrypt.log.8
-rw-r--r-- 1 root root  8826  1月  4 10:51 letsencrypt.log.9

主に書き込まれた月が、1月、4月、6月のファイルしかありませんでした。CRONで毎日更新が行われているのであれば、ここのフォルダにログファイルが書き込まれているはずですが、ありませんでした。また一部ファイルの中身も確認しましたが、それらしいログはなく、手動で更新した際のログはありました。

  • 1月:Let's Encryptを導入
  • 4月:SSH証明書の有効期限を手動で更新
  • 6月:本記事で色々と操作

調査③:手動で更新し、ログを確認

以下のコマンドを手動で実行し、Certbotのログを確認しました。

sudo certbot renew --no-self-upgrade
  • SSL証明書の有効期限が更新されていることを確認
    スクリーンショット 2023-06-15 17.31.43.png
    スクリーンショット 2023-06-15 17.32.04.png

  • Certbotが実行されていたことを確認

sudo vim /var/log/letsencrypt/letsencrypt.log

※情報量が多いので、エビデンスの掲載は省略。

調査①〜③でわかったこと

手動でCertbotを更新することができているので、CRONでの更新がうまくいっていないことがわかりました。しかし、それ以上の原因が突き止められなかったため、とりあえず、CRONの実行処理で問題があると見て、検討しました。その結果、実行時の権限に問題があるのでは、ということに気づき、調査④を実行してみた。

調査④:sudoをCRONに追加

CRONと手動実行で比較したときに、sudoによる権限に差があったので、試しにsudoを追記してみました。

$ sudo crontab -e
0 1 16 * * root sudo certbot renew --no-self-upgrade

運用環境

以下はアプリへアクセスする際に使用していたブラウザの詳細になります。

  • OS:macOS 13.4(22F66)
  • ブラウザ:Google Chrome バージョン: 114.0.5735.106(Official Build) (arm64)

以下はアプリ/サーバー環境の情報になります。

  • 開発言語:Ruby on Rails
  • 開発環境:AWS(EC2、Route53)、Nginx
  • その他:Let's Encrypt

はじめに

  • 本記事は、備忘録としてまとめたものになります。
  • 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
  • また記載内容はすべて、正しい内容が記載されているとは限りません。
  • 誤った内容を見つけた場合は、ご指摘をお願いいたします。
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?