SSL Early Data поддерживает только первый worker?

Ilya Evseev nginx-forum на forum.nginx.org
Ср Янв 29 03:20:23 UTC 2020


Есть Nginx 1.17.8, собран со свежей BoringSSL stable.
Запущен на Linux kernel 5.4.10:

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
configure arguments:
--prefix=/etc/nginx
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
--user=nginx
--group=nginx
--with-compat
--with-file-aio
--with-threads
--with-http_addition_module
--with-http_dav_module
--with-http_flv_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_mp4_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-stream
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-openssl=boringssl
--with-http_image_filter_module
--with-cc-opt='-O2
-g
-pipe
-Wall
-Wp,-D_FORTIFY_SOURCE=2
-fexceptions
-fstack-protector-strong
--param=ssp-buffer-size=4
-grecord-gcc-switches
-m64
-mtune=generic
-fPIC'
--with-ld-opt='-Wl,-z,relro
-Wl,-z,now
-pie'

SSL в Nginx'e настроен так:

  ssl_dhparam /etc/pki/tls/private/dhparam2048.pem;
  ssl_session_timeout 1h;
  ssl_session_cache shared:SSL:10m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers
kEECDH+ECDSA+AESGCM:kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
  ssl_prefer_server_ciphers on;
  ssl_early_data on;

Проверяю, поддерживает ли он SSL early data:

docker run --rm -it nablac0d3/sslyze --early_data 1.2.3.4

Результат:

- Если в nginx'e настроен "worker_processes 1;", sslyze всегда возвращает
"Suppported - Server accepted early data"
- Если воркеров больше одного, "Supported" начинает возвращаться не всегда.
Чем больше воркеров - тем чаще возвращается "Not supported".

Т.е. выглядит так, будто SSL Early Data поддерживает только первый воркер.

Этому есть какое-то объяснение?

multi_accept и accept_mutex на ситуацию не влияют.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286846,286846#msg-286846



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