Новая версия nginx 1.29.1. Представлен модуль ngx_http_acme

Опубликован выпуск основной ветки nginx 1.29.1, в которой продолжается развитие новых возможностей. В параллельно поддерживаемую стабильную ветку 1.28.x вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В дальнейшем на базе основной ветки 1.29.x будет сформирована стабильная ветка 1.30. Код проекта написан на языке Си и распространяется под лицензией BSD.

В новом выпуске:

  • Устранена уязвимость (CVE-2025-53859) в модуле ngx_mail_smtp_module, приводящая к чтению данных из области памяти вне буфера при обработке специально оформленных значений логина и пароля при использовании метода аутентификации "none". Уязвимость может привести к утечке содержимого памяти рабочего процесса nginx в HTTP-запросе к внешнему серверу аутентификации. Патч.
  • По умолчанию отключено сжатие сертификатов TLSv1.3.
  • Добавлена директива "ssl_certificate_compression" для управления сжатием TLS-сертификатов.
  • В реализацию протокола QUIC добавлена поддержка режима 0-RTT, доступная на системах с OpenSSL 3.5.1 и более новыми выпусками.
  • Устранена ошибка, приводившая к буферизации HTTP-ответа 103 при использовании HTTP/2 и директивы "early_hints".
  • Устранена ошибка в обработчике параметра "none" в директиве "smtp_auth".
  • В реализации HTTP/3 решена проблема с обработкой номера порта в заголовке "Host".
  • Устранена проблема, проявлявшаяся при использовании одинаковых значений в заголовках "Host" и ":authority" при использовании HTTP/2.
  • Налажена сборка в NetBSD 10.0.

Отдельно компания F5 представила предварительный выпуск модуля ngx_http_acme, предоставляющего возможности для автоматизации запроса, получения и обновления сертификатов с использованием протокола ACMEv2 (Automatic Certificate Management Environment), применяемого удостоверяющим центром Let’s Encrypt. При использовании http_acme администраторам не нужно заботиться об обновлении сертификатов, на основе параметров в конфигурации модуль сам получит необходимые сертификаты в Let’s Encrypt или другом сервисе, поддерживающем протокол ACME. Код модуля написан на языке Rust с использованием SDK NGINX-Rust.


   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; # ACME 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; 
   }