Nginx 1.29.1: модуль ACME на Rust и сертификаты Let’s Encrypt без костылей

14 августа 2025 года вышел Nginx 1.29.1. Это не только багфиксы: в комплекте появился модуль ngx_http_acme на Rust. С ним можно запрашивать и обновлять TLS-сертификаты Let’s Encrypt прямо из Nginx, без отдельного certbot, acme.sh и cron-скриптов на перезагрузку.


Безопасность

  • Закрыта критическая уязвимость CVE-2025-53859 в ngx_mail_smtp_module. При SMTP-аутентификации в режиме "none" можно было прочитать кусок памяти рабочего процесса. В 1.29.1 дыра закрыта.
  • По умолчанию отключено сжатие сертификатов TLSv1.3.
  • Добавлена директива ssl_certificate_compression: сжатие сертификатов включаете сами, если нужно.

Новые возможности

  • QUIC с 0-RTT (при OpenSSL 3.5.1+) – меньше задержки на повторных соединениях.
  • Исправления в HTTP/2, HTTP/3 и обработке заголовков Host / :authority.
  • Починена сборка на NetBSD 10.0.

Модуль ngx_http_acme

Модуль автоматизирует:

  • запрос сертификатов по ACMEv2;
  • принятие ToS Let’s Encrypt;
  • регулярное обновление без ручного вмешательства.

Зачем это: раньше ставили certbot или acme.sh, вешали cron и перезагружали nginx. Теперь цепочку ACME можно описать в конфиге самого сервера.


Пример конфигурации

acme_issuer letsencrypt {
    uri         https://acme-v02.api.letsencrypt.org/directory;
    state_path  /var/cache/nginx/acme-letsencrypt;
    accept_terms_of_service;
}

server {
    listen 80; # HTTP-01 challenge
    location / { return 404; }
}

server {
    listen 443 ssl;
    server_name example.com;
    acme_certificate letsencrypt;
    ssl_certificate       $acme_certificate;
    ssl_certificate_key   $acme_certificate_key;
    ssl_certificate_cache max=2;
}

Итог

Nginx 1.29.1 даёт три понятных плюса:

  • закрытый CVE и более жёсткие дефолты TLS;
  • QUIC 0-RTT и правки HTTP/2/3;
  • встроенный ACME без внешних скриптов.

Для DevOps-стека обновление имеет смысл: меньше обвязки вокруг сертификатов, безопаснее mail-модуль, аккуратнее TLS-дефолты. ACME-модуль – шаг к тому, чтобы Nginx сам закрывал жизненный цикл сертификатов, а не только раздавал HTTPS.

Источники и ссылки


Комментарии загружаются…