Cron обновил сертификат, джоба зелёная, а nginx, HAProxy или IIS держат в памяти прежний: файлы на диске новые, но процесс перечитывает их только после reload. Второй случай: скрипт кладёт файл в один каталог, а конфиг после давней миграции читает из другого. Скрипт выйдет с нулём, ничего не изменив.
Поэтому пайплайн заканчивается не успешной командой, а проверкой живого эндпоинта после reload:
• снять сертификат с боевого адреса:
echo | openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -serial -enddate;• сравнить serial и notAfter с тем, что только что задеплоили;
• расходятся: сделать reload и проверить, из какого пути читает сервис.
Пока этого шага нет, об истёкшем сертификате вы узнаёте от пользователей. Разбор цепочки от renew до recover — в статье на DevOps.com.
