ssl_early_data

Директива `ssl_early_data` включает или отключает использование ранних данных TLS в NGINX. — NGINX HTTP Core

ssl_early_data
httpserver
Синтаксисssl_early_data on | off;
По умолчаниюoff
Контекстhttp, server
МодульNGINX HTTP Core
Аргументыflag

Описание

Директива `ssl_early_data` управляет обработкой ранних данных в TLS 1.3-соединениях для NGINX. Ранние данные позволяют клиентам отправлять данные сразу после начала рукопожатия, что особенно выгодно в сценариях, когда клиент хочет отправить запрос до завершения рукопожатия, потенциально снижая задержку для таких операций, как HTTP/2 и QUIC. При включении клиент может отправить до 2^14 байт ранних данных на сервер при условии, что сервер настроен соответствующим образом для их обработки. Установка директивы в 'on' включает прием ранних данных, что требует осторожного подхода из-за возможных атак воспроизведения, поскольку ранние данные не гарантируют свежесть отправляемых данных. Для снижения связанных с этим рисков может потребоваться реализовать политики, например проверки идемпотентности на уровне приложения. Важно отметить, что не все клиенты могут поддерживать или корректно обрабатывать ранние данные, и их эффективность может варьироваться в зависимости от шаблонов трафика и сценариев использования веб‑приложения. Эта директива может использоваться в контекстах `http` и `server`, влияя на то, как согласовываются соединения и как обрабатываются ранние данные в ходе TLS-сеансов.

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

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    ssl_early_data on;
}

Включение early data может подвергнуть приложение атакам воспроизведения; убедитесь, что идемпотентность корректно обрабатывается.

Не все клиенты поддерживают early data, что может привести к непоследовательному поведению при широком использовании на разных user agents.