Kumo Notes

インフラ作業メモ · Tokyo

2026-10

終了日時そのものを見ていると、有効期間が短い証明書では気づくのが遅れます。 90 日の証明書なら「あと 1 ヶ月ある」と思っている間に、実は更新の猶予が ほとんど残っていない、ということが何度かありました。

残り日数で判定するように変えてから、更新漏れがほぼ無くなりました。 シェルで書くとこんな感じです。

end=$(openssl s_client -connect host:443 -servername host </dev/null 2>/dev/null \
        | openssl x509 -noout -enddate | cut -d= -f2)
left=$(( ( $(date -d "$end" +%s) - $(date +%s) ) / 86400 ))
echo "$left"

これを cron で回して、残り 20 日を切ったら通知、という形にしています。 短い有効期間の証明書が増えたので、しきい値はもう少し短くしてもいいかもしれません。

はまったところ

date -d は GNU date の拡張なので、BSD 系だとそのままでは動きません。 自分は Linux しか触らないので気にしていませんが、スクリプトを人に渡すときは 注意が必要だと毎回思います。

あと、openssl s_client は接続先が落ちていると何も返さずに終わるので、 パイプの後段で空文字を掴んで date がエラーになることがあります。 先に [ -n "$end" ] で弾くようにしました。

← メモ一覧に戻る