Welcome! Log In Create A New Profile

Advanced

Re: add header и log format не видят часть переменных $ssl xx

Maxim Dounin
February 10, 2020 09:26AM
Hello!

On Sun, Feb 09, 2020 at 09:31:09PM -0500, Ilya Evseev wrote:

> Имеется Nginx:
>
> nginx version: nginx/1.17.8
> built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
> built with OpenSSL 1.1.0 (compatible; BoringSSL) (running with
> BoringSSL)
> TLS SNI support enabled
>
> В настройках указано:
>
> add_header X-SSLEarly $ssl_early_data always;
> add_header X-SSLSerial $ssl_client_serial always;
> add_header X-SSLCipher $ssl_cipher always;
> add_header X-SSLVStart $ssl_client_v_start always;
> add_header X-SSLProto $ssl_protocol always;
> add_header X-SNIName $ssl_server_name always;
> add_header X-SSLSessID $ssl_session_id always;
>
> Однако заголовки ответа содержат не всё:
>
> x-sslcipher: TLS_CHACHA20_POLY1305_SHA256
> x-sslproto: TLSv1.3
> x-sniname: www.test.lan

Директива add_header не добавляет заголовки с пустым содержимым.
Соответственно, в приведённом примере переменные $ssl_early_data,
$ssl_client_serial, $ssl_client_v_start и $ssl_session_id - пустые.

> Во-вторых, формат логов настроен так:
>
> log_format test "$ssl_protocol" "$ssl_server_name" "$ssl_early_data"
> "$ssl_session_reused" "$ssl_cipher"';
>
> В документации написано, что $ssl_early_data содержит либо 1, либо пустую
> строку, однако в логи пишется "-":
>
> "TLSv1.3" "www.test.lan" "-" "." "TLS_CHACHA20_POLY1305_SHA256"
>
> Хотя SSL Early Data включён и работает (проверено через sslyze, количество
> воркеров специально уменьшено до одного).

Переменная $ssl_early_data будет непустой тогда и только тогда,
когда на момент обращения к этой переменной SSL handshake не
завершён. В первую очередь она предназначена для использования
при формировании заголовка Early-Data для бэкенда (см.
http://nginx.org/r/ssl_early_data).

В момент логгирования - SSL handshake с высокой вероятностью будет
уже завершён, если только речь не идёт про совсем простые ответы
от собственно nginx'а. Соответственно нет ничего удивительного в
том, что в момент логгирования переменная пустая.

Если хочется логгировать факт использования early data в запросе
независимо от текущего статуса handshake'а - то наиболее близкое
по смыслу значение можно получить, сохраняя значение переменной
$ssl_early_data на этапе поиска конфигурации для запроса с помощью
директивы set.

Что до значения "-" вместо пустой строки при логгировании, то это
историческая особенность логгирования: "-" используется вместо
переменных, значения которых не найдены, что и происходит в случае
пустого значения $ssl_early_data.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Re: add header и log format не видят часть переменных $ssl xx

Maxim Dounin February 10, 2020 09:26AM

Re: add header и log format не видят часть переменных $ssl xx

yanda.a February 11, 2020 05:15AM

Re: add header и log format не видят часть переменных $ssl xx

Maxim Dounin February 11, 2020 10:20AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 93
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready