Firefox повторно исплользует соединение IPv6 на основании IPv4. Как с этим жить?
Иван
nginx на kinetiksoft.com
Ср Июн 1 17:50:34 UTC 2016
Здравствуйте!
Я прошу прощения за осознанный оффтопик. Но, к сожалению, я вряд ли где еще
найду столько людей понимающих как работает SPDY и HTTP/2, чем тут. К тому же
проблема косвенно затрагивает конфигурирование nginx и, когда IPv6 станет более
массовым с проблемой столкнется, мне кажется, большинство присутствующих.
Некоторое время назад я обнаружил и зарепортил следующий баг:
https://bugzilla.mozilla.org/show_bug.cgi?id=1190136
Выглядело это как будто, обращаясь к одному виртуалхосту, я получаю контент
другого.
Конкретно понимание проблемы пришло тут
https://bugzilla.mozilla.org/show_bug.cgi?id=1190136#c22 .
Как вопроизвести, описано тут
https://bugzilla.mozilla.org/show_bug.cgi?id=1190136#c19
Если кратко, то при использовании SPDY\HTTP/2 (для краткости SPDY) Firefox,
начиная с вот этого коммита (https://hg.mozilla.org/mozilla-central/rev/5d7317e09ea1)
принимает решение о повторном использовании соединения с виртуалхостом по
протоколу IPv6 на основании совпадения адреса в A-записи при условии
использования обоими wildcard-сертификата валидного для обоих виртуалхостов.
То есть
У нас есть домен example.com и сертификат *.example.com. На сервере и на клиентах
должен быть функционирующий IPv6 (я на клиентах использую туннельного
брокера).
1) Заводим два субдомена (например aaa.example.com и bbb.example.com),
указывающих на одинаковый ipv4 адрес (A-запись) и разные ipv6 адреса (AAAA-
запись)
2) В заводим два виртуальных хоста, можно на одном сервере, можно на разных.
Главное, чтоб у них использовались субдомены из п.1, сертификат *.example.com, и
IPv6 адреса соотвествовали AAAA-записям из п.1. IPv4 адреса тут не важны.
3) Пытаемся загрузить https://a.example.com. Файрфокс присылает запрос на
правильный IPv6 адрес, проставляя правильное поле Host в запросе.
4) Пытаемся загрузиться https://b.example.com, файрфокс будет повторно
использовать соединение из п.3, основываясь на том, что оба субдомена имеют
одну и ту же A-запись. И пошлет запрос на IPv6 адрес первого домена, передав в
заголовке Host адрес второго домена.
Разработчик, отвественный за эту часть броузера сказал, что это не баг и чинить он
его не будет. Посоветовав использовать разные сертификаты для разных
субдоменов (а не wildcard) или пользоваться http-ответом с кодом 451.
Однако я с этим в корне не согласен, более того, считаю, что такое поведение
открывает уязвимость, которую я описал тут:
https://bugzilla.mozilla.org/show_bug.cgi?id=1190136#c22
Но технической квалификации и политического веса в мире броузеров и серверов
мне не хватает. Так же мало кто используется ipv6 на клиенте, поэтому массовка еще
набралась.
Что я хочу, написав, это письмо здесь?
1) Оцените, пожалуйста, насколько я прав. Может быть все не так, как мне кажется?
Дальше только, если я прав.
2) Помогите найти аргументы для убеждения разработчиков ФФ, что этот баг надо
исправлять. Если кто готов отписаться там, я открою обратно этот баг.
3) Может быть как-то можно сконфигурировать nginx, чтобы решить эту проблему,
кроме использования раздельных сертификатов для поддоменов? Ибо раздельные
сертификаты - не всегда возможно.
Спасибо за помощь.
С уважением, Иван Прокудин.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160601/8220359c/attachment.html>
Подробная информация о списке рассылки nginx-ru