Re: Количество клиенстких ошибок выросло после обновления до новой nginx(1.14.2) c новым openssl (1.0.2g)

Dmitry Sergeev identw на gmail.com
Вс Апр 7 12:45:23 UTC 2019


> Количество ошибок на уровне HTTP - может быть нерелевантно
> происходящему, и, скажем, означать, что больше проблемных клиентов
> теперь могут пройти через SSL handshake.
>
> Ну и смотреть надо не на абсолютные цифры, а на проценты от
> трафика.  Если речь про доли процента - наблюдаемое изменение
> может быть следствием того, что проблемы возникают у каких-либо
> малораспространённых клинтов, и совершенно не факт, что на это
> надо обращать внимание.  Например, из OpenSSL 1.0.2 могли убрать
> какие-то workaround'ы для ошибочного поведения, или же из-за
> изменения списка шифров теперь используются другие шифры, которые,
> наоборот, вызывают проблемы в этих клиентах.

Ну не знаю, количество ошибок, которое возросло в 3-4 раза, как по мне 
стоит того, чтобы обратить внимание. Доля трафика конечно небольшая, я 
думаю примерно в пределах одного процента, а точнее: 0.24% запросов это 
ошибки (499,408,400). Но обычно эта доля составляет 0.05%, что и 
расстраивает. Надо конечно это считать не по количеству запросов, а по 
количеству пользователей, которых это затрагивает, но все же.

> Если же хочется таки разобраться - то имеет смысл смотреть
> подробную информацию по ошибкам, в частности - что при этом пишет
> nginx в логи (если есть подробности - они скорее всего на уровне
> info), и что известно про этих клиентов - User-Agent, используемые
> протоколы, шифры и так далее.
Да, спасибо. Буду исследовать дальше.

> В первую очередь - в OpenSSL 1.0.1 нет ALPN, то есть HTTP/2 в
> современных браузерах работать не будет.  Если в конфиге включён
> HTTP/2 - переход на OpenSSL 1.0.2 будет сильным изменением
> поведения в любом случае.  Так что имеет смысл HTTP/2 выключить и
> сравнивать строго без HTTP/2.  Важно при этом выключить везде,
> потому как http2 - это опция сокета, и если она останется в любом
> из блоков server, то HTTP/2 продолжит работать.
Тестил как с http2 так и без него, результат один и тот же. Про то что 
отключать его нужно во всех блоках server знаю, после выключения 
непосредственно проверял вручную, выключился ли он действительно.

> Если вдруг используются множественные сертификаты в одном блоке
> server - переход с OpenSSL 1.0.1 на 1.0.2 потребует изменения
> цепочек в ssl_certificate, т.к. в случае OpenSSL 1.0.1 цепочка
> только одна и общаяя для всех сертификатов, а в случае 1.0.2 - у
> каждого сертификата своя.
Я к сожалению не очень разбираюсь в этом, я использую wildcard 
сертификаты от letsencrypt. То что сгенирировал certbot то и даю nginx. 
Как писал раннее, тестил версии openssl: 1.0.1u, 1.0.2g, 1.1.1b. Данная 
проблема воспроизводится успешно на 1.0.2g и 1.1.1b.

Спасибо за наводки, понял, что проблема скорее всего на клиентской 
стороне с поддержкой алгоритмов ssl или еще какие-то, буду исследовать 
дальше.


-- 

Kind regards
Dmitry Sergeev
Tel: +7 (951) 129-75-72

----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20190407/53fad9e6/attachment.html>


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