> On 21 Feb 2020, at 22:19, mikhal123 <nginx-fo...@forum.nginx.org> wrote: > > Включил на своём сервере опцию "ssl_early_data". Всё вроде бы хорошо, но в > error.log довольно много (порядка 0.5% от общего числа запросов, что на > трафике в миллион уже немного напрягает) записей вида: > [crit] 11016#11016: *46796 SSL_read_early_data() failed (SSL: > error:1423D06E:SSL routines:tls_parse_ctos_server_name:bad extension) while > SSL handshaking, client: <ip_адрес_клиента>, server: 0.0.0.0:443 >
Было бы интересно посмотреть, что конкретно там прилетает. > В связи с этим хотелось бы узнать: > 1. Правильно ли я понимаю, что это проблемы со стороны клиентов (слишком > старые клиенты?), и на сервере невозможно что-либо поделать для исправления > этой ситуации? Верно. Так происходит, например, если получен испорченный SNI: плохой тип и/или длина значения, нулевые байты в значении, плохой формат. > 2. Если так, то с какой целью данное извещение выводится с таким высоким > уровнем приоритета (crit) Так происходит по умолчанию, чтобы не пропустить ничего важного. > 3. Можно ли как-то отключить вывод данного извещения (например, понизив его > приоритет до warn) в логи для приведения их в прежний благопристойный вид? > Можно попробовать патч, понижающий уровень: # HG changeset patch # User Sergey Kandaurov <pluk...@nginx.com> # Date 1582383432 -10800 # Sat Feb 22 17:57:12 2020 +0300 # Node ID ffb1eaf3bd88886233d941e531d68785671ae457 # Parent 72b792bb3885727bf381d4c4e66cfaf754ac7a59 SSL: logging level of "bad extension". The "bad extension" errors are reported by OpenSSL 1.1.1 if an invalid servername extension value is received. diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c --- a/src/event/ngx_event_openssl.c +++ b/src/event/ngx_event_openssl.c @@ -2896,6 +2896,9 @@ ngx_ssl_connection_error(ngx_connection_ #ifdef SSL_R_NO_SUITABLE_KEY_SHARE || n == SSL_R_NO_SUITABLE_KEY_SHARE /* 101 */ #endif +#ifdef SSL_R_BAD_EXTENSION + || n == SSL_R_BAD_EXTENSION /* 110 */ +#endif #ifdef SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM || n == SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM /* 118 */ #endif Или конкретно для SNI: diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c --- a/src/event/ngx_event_openssl.c +++ b/src/event/ngx_event_openssl.c @@ -2896,6 +2896,11 @@ ngx_ssl_connection_error(ngx_connection_ #ifdef SSL_R_NO_SUITABLE_KEY_SHARE || n == SSL_R_NO_SUITABLE_KEY_SHARE /* 101 */ #endif +#ifdef SSL_R_BAD_EXTENSION + || (n == SSL_R_BAD_EXTENSION /* 100 */ + && ERR_GET_FUNC(ERR_peek_error()) + == SSL_F_TLS_PARSE_CTOS_SERVER_NAME) +#endif #ifdef SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM || n == SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM /* 118 */ #endif -- Sergey Kandaurov _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru