$ssl_early_data

Переменная $ssl_early_data указывает, были ли получены ранние данные в SSL/TLS-соединении. — NGINX Core (HTTP)

$ssl_early_data NGINX Core (HTTP)

Описание

В NGINX переменная $ssl_early_data используется, когда сервер настроен на поддержку TLS 1.3, который предусматривает функцию, известную как "0-RTT" или ранние данные. Эта функция позволяет клиентам отправлять данные до полного завершения TLS-рукопожатия, что ускоряет обмен, но влечёт за собой определённые соображения по безопасности. Когда ранние данные получены, значение $ssl_early_data устанавливается в "1"; в противном случае оно устанавливается в "0". Эта переменная особенно полезна для определения того, как обрабатывать запросы, которые могли быть отправлены с использованием ранних данных. Например, опора на ранние данные может привести к рискам, таким как атаки повторного воспроизведения, поэтому пользователи должны реализовать необходимую логику для защиты от таких уязвимостей. NGINX может использовать значение этой переменной в условных конфигурациях, чтобы применять разные ограничения или ответы в зависимости от того, использовались ли ранние данные при запросе.

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

server {
    listen 443 ssl;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        # Check if early data was received
        if ($ssl_early_data) {
            return 400;  # Reject early data requests if needed
        }
        # Normal processing for regular requests
        proxy_pass http://backend;
    }
}

Подсистема

http

Кэшируется

Нет

Контексты

http, server, location, if

Использование $ssl_early_data без включения поддержки TLS 1.3 всегда будет возвращать 0 (no early data).

Предположение, что обработка early data безопасна без внедрения надлежащих мер безопасности, может привести к уязвимостям.