1. 1
  2. 2
  3. 3
  4. 4
  5. 5

# конспект · шаг 5 из 5

Конспект: выпуск и продление

выжимка - её можно унести в заметки

Как сертификат выпускается сам и что должно быть в конфиге, чтобы продление не ломалось.

Как проходит проверка http-01

1. клиент просит сертификат для shop.local
2. Let's Encrypt: «положи файл по адресу
   http://shop.local/.well-known/acme-challenge/<token>»
3. клиент кладёт файл
4. Let's Encrypt делает HTTP-запрос
5. совпало → сертификат выписан

Обязательное исключение в редиректе

server {
    listen 80;
    server_name shop.local www.shop.local;

    location /.well-known/acme-challenge/ {   # ДО редиректа
        root /var/www/certbot;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}
$  команда
certbot certonly --webroot -w /var/www/certbot -d shop.local -d www.shop.local

Два пути

Путь Особенность
certbot (webroot / --nginx) классика, работает везде; продление таймером systemd
нативный модуль nginx-module-acme (1.29.0+) выпуск прямо в nginx, без внешнего клиента
dns-01 нужен для wildcard и для серверов без входящего 80 порта

Ловушки джокера

  • return 301 до блока с челленджем - продление ломается, а узнают об этом через 90 дней, когда сертификат истечёт.
  • Продление без reload. Новый файл лежит на диске, nginx держит в памяти старый: --deploy-hook "systemctl reload nginx".
  • Лимиты Let's Encrypt (сертификатов на домен в неделю) выбираются быстро, если гонять выпуск в цикле при отладке. Для тестов есть staging-окружение.

Что ловит проверка конфига у модуля ACME

что убрали nginx -t когда всплывёт
resolver [emerg] acme_issuer: "resolver" is not configured сразу
state_path successful при рестарте: всё выпускается заново, лимиты
ssl_certificate_cache successful под нагрузкой
маска в server_name successful при выпуске: имена нужны явные

То есть у модуля nginx -t проверяет синтаксис, а не осмысленность: три ошибки из четырёх доезжают до работы.

Замер про certbot

return 301 на уровне server уводит челлендж в редирект (301), тот же редирект внутри location / отдаёт файл (200). Работает такая схема ровно до того дня, когда протухнет https-сертификат, - и ломается именно тогда, когда нужна.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.