KolyaniuS
@KolyaniuS
безнадежный оптимист

Почему после включения HTTP2 сайт не работает в большинстве браузеров?

Всем привет!
~# nginx -V 
nginx version: nginx/1.9.9
built by gcc 4.9.2 (Debian 4.9.2-10) 
built with OpenSSL 1.0.1k 8 Jan 2015
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-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6


Включаю поддержку http2 в директиве server на целевом сайте и браузеры (chrome, firefox, opera) перестают его открывать, хотя в safari, qupzilla и в curl сайт открывается
Выпадает со следующей ошибкой в хроме:
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

До этого была установлена версия nginx 1.9.4 со включенным spdy - все работало замечательно.
Конфиги nginx не менялся после апдейта версии (ставилось из офф репозиториев nginx)
~# cat /etc/apt/sources.list.d/nginx.list 
deb http://nginx.org/packages/mainline/debian/ jessie nginx
deb-src http://nginx.org/packages/mainline/debian/ jessie nginx

Включенные директивы в блоке http:
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver XXX.XXX.XXX.XXX;
ssl_trusted_certificate /etc/nginx/ssl/domain-bundle.crt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

Включенные директивы в блоке server:
listen 443 ssl http2;
ssl on;
ssl_certificate 	/etc/nginx/ssl/domain-bundle.crt;
ssl_certificate_key 	/etc/nginx/ssl/domain.key;


При этом выключаю http2 - во всех браузерах начинает все работать.
Проверка в https://www.ssllabs.com/ssltest показывает:
Next Protocol Negotiation (NPN) Yes h2 http/1.1
В чем проблема то?
ЗЫ: сайт находиться за программным NAT-шлюзом (iptables-rules)
  • Вопрос задан
  • 5976 просмотров
Решения вопроса 1
KolyaniuS
@KolyaniuS Автор вопроса
безнадежный оптимист
Переместил директивы касающиеся настроек ssl из блока server { ... } в http {... } и все заработало ...
nginx.org/ru/docs/http/ngx_http_ssl_module.html
Везде указаны оба контекста в качестве разрешенных
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы