ssl_early_data

Maxim Dounin mdounin на mdounin.ru
Вс Апр 25 14:56:14 UTC 2021


Hello!

On Sat, Apr 24, 2021 at 10:15:36PM +0300, Gena Makhomed wrote:

> Есть в nginx директива ssl_early_data, но как я 
> понял из документации,
> чтобы ее можно 
> было безопасно включить - необходимо сделать защиту
> от replay attacks.
> 
> В документации предлагается делать ее на бекенде,
> с помощью заголовка proxy_set_header Early-Data $ssl_early_data;
> 
> Можно ли настроить сам nginx таким способом, чтобы он нормально
> пропускал на бекенд безопасные запросы GET, HEAD, OPTIONS, TRACE
> в том случае когда $ssl_early_data установлена в 1 и чтобы 
> он возвращал
> клиенту 425 (Too Early) status code в том случае, если запрос имеет
> не безопасный 
> метод POST, PUT, DELETE, PATCH и $ssl_early_data; равно 1.

Настроить можно:

   set $early $ssl_early_data:$request_method;

   if ($early ~ ^1:(?!GET$|HEAD$)) {
       return 425;
   }

Однако в соответствии с RFC 8470 клиенты не имеют права посылать 
небезопасные запросы с использованием early data[1], так что 
смысла в такой настройке примерно ноль.

Использование переменной $ssl_early_data имеет смысл тогда, когда 
replay-атаки могут представлять опасность для "безопасных 
запросов".  То есть, скажем, если где-то GET-запросы используются 
небезопасно и имеют сайд-эффекты (хоте и не должны по 
спецификации), или же если если replay-атаки могут быть 
использованы для получения какой-то информации[2].

[1] https://tools.ietf.org/html/rfc8470#section-4
[2] https://tools.ietf.org/html/rfc8470#section-6

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru