$ssl_early_data
Переменная $ssl_early_data указывает, были ли получены ранние данные в SSL/TLS-соединении. — 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 безопасна без внедрения надлежащих мер безопасности, может привести к уязвимостям.