Caddy — алерт если auto-renewal не сработал
Caddy обычно сам обновляет cert, но один раз rate-limit от Let's Encrypt сорвал renewal — узнали за 2 дня до expiry. Нужен ежедневный двойной чек.
Рецепт
#!/usr/bin/env bash
# Reads the cert directly off the live socket; fails when < N days remain.
DOMAIN="${1:-example.com}"
DAYS_LEFT_THRESHOLD="${DAYS_LEFT_THRESHOLD:-14}"
EXPIRY=$(echo | openssl s_client -servername "$DOMAIN" -connect "$DOMAIN:443" 2>/dev/null \
| openssl x509 -noout -enddate 2>/dev/null \
| cut -d= -f2)
[ -z "$EXPIRY" ] && { echo "fetch-failed"; exit 1; }
EXP_TS=$(date -d "$EXPIRY" +%s)
NOW=$(date +%s)
DAYS=$(( (EXP_TS - NOW) / 86400 ))
[ "$DAYS" -lt "$DAYS_LEFT_THRESHOLD" ] && echo "low $DAYS" || echo "ok $DAYS"
То же самое в Enterno.io
Уже встроено в Enterno SSL Checker — но cron + monitor с keyword "ok" даёт настоящий on-call пейджер. Captain-tier хранит history, видно паттерн "renewal failed по понедельникам в 3 ночи".
Похожие рецепты
Самоподписанный скрипт проверяет SSL сертификат и шлёт алерт за 14 дней до expiry.
Сайт в HSTS preload-листе, но после рефакторинга nginx конфиг заголовок пропал. Через 3 месяца домен будет удалён из preload-листа. Нужен ежедневный чек.
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.