Skip to content

Caddy — алерт если auto-renewal не сработал

Caddy обычно сам обновляет cert, но один раз rate-limit от Let's Encrypt сорвал renewal — узнали за 2 дня до expiry. Нужен ежедневный двойной чек.

Рецепт

bash
#!/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 Checker → ← Все рецепты

Похожие рецепты