Certbot: проверка ACME challenge и срока действия сертификата
Проверка доступности .well-known/acme-challenge и проверка дат сертификата через openssl s_client. Для диагностики ошибок выпуска и продления.
Как использовать
- Проверка challenge: создай файл в .well-known/acme-challenge/ и запроси его через curl по HTTP.
- Проверка срока: openssl s_client + openssl x509 -noout -dates; подставь свой домен и порт 443.
Две типовые проверки: доступен ли каталог для HTTP-01 challenge (иначе certbot не сможет подтвердить домен) и какие даты у сертификата, который реально отдаёт сервер по HTTPS.
1. Доступность каталога для ACME challenge
Let’s Encrypt обращается по адресу http://домен/.well-known/acme-challenge/TOKEN. Файл должен отдаваться по HTTP без редиректа на HTTPS до выпуска сертификата.
Пример для домена example.com и webroot BitrixVM:
mkdir -p /home/bitrix/ext_www/example.com/public_html/.well-known/acme-challenge
echo test > /home/bitrix/ext_www/example.com/public_html/.well-known/acme-challenge/test.txt
chown -R bitrix:bitrix /home/bitrix/ext_www/example.com/public_html/.well-known
curl -s http://example.com/.well-known/acme-challenge/test.txt
Ожидаемый ответ: строка test. Если пусто, 404 или редирект — nginx не отдаёт этот путь или путь в certbot -w указан неверно.
2. Срок действия сертификата по HTTPS
Проверка, какой сертификат отдаёт сервер и до какой даты он действителен:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates
Вывод: notBefore и notAfter — период действия. Если после продления даты не обновились, выполни systemctl reload nginx, чтобы nginx подхватил новые файлы из /etc/letsencrypt/live/.
Источники: Let’s Encrypt — HTTP-01 challenge, OpenSSL s_client, x509.