Настройки IE9 и apache SSL nokeepalive

8

В настоящее время я использую Apache 2.2.3 и CentOS 5.4 для своих приложений php (php работает на 5.3.7), а приложение работает на HTTPS и с сертификатом Root CA.

Проблема в том, что у нас были некоторые странные проблемы с IE9 (только IE9). Когда браузер IE9 отправляет запрос HTTPS на наш сервер, иногда нет ответа HTTPS. Я заметил, что IE9 обновит страницу. Чтобы быть более конкретным, упомянутая страница является страницей входа. Поэтому, когда я ввожу имя пользователя и пароль и отправляю форму, но ответа нет, кажется, что IE9 снова загружает ту же страницу входа. (с пустым именем пользователя и паролем)

При трассировке с уровня приложения я замечаю, что получил имя пользователя и пароль, и приложение завершилось без ошибок.

Основная головная боль состоит в том, что это не может быть воспроизведено каждый раз. Иногда мы можем войти без каких-либо проблем, но иногда это будет иметь упомянутую выше проблему, упомянутую выше.

Теперь в нашу компанию попали сетевые команды, разработчики и другие команды. Наш apache работает под балансировщиком нагрузки. Сетевые парни утверждают, что они никогда не меняют никаких настроек, единственное изменение - это наше приложение. Но с точки зрения разработчиков изменения никак не связаны с процессом входа в систему.

С моей точки зрения, похоже, что когда пользователь нажимает кнопку «Отправить», приложение (apache) делает то, что делает, отправляя HTML (HTTPS Response), но HTML каким-то чудесным образом исчезает в сети. Я подозреваю, что есть какое-то отношение к поддержанию связи? Вероятно, браузерный агент IE9 обрабатывает его по-другому, и каким-то образом он считает, что соединение не установлено и перезагружает страницу для повторной попытки?

Но в любом случае я заметил следующие настройки в Apache для доступа SSL:

SetEnvIf Пользователь-агент ". MSIE. " \ Nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0

Не знаете, как мы можем настроить таким образом, чтобы исключить IE9 и выше? Когда я выполняю поиск, вышеуказанные настройки должны исправить давнюю проблему, когда IE соединяется с Apache. Но поскольку IE9 является совершенно новым, возможно, проблема уже устранена, и что нам нужно обновить настройки?

Надеюсь, кто-то может пролить свет на это ..

forestclown
источник
Нашел эту ссылку blogs.msdn.com/b/ieinternals/archive/2011/03/26/…
forestclown
blogs.msdn.com/b/ieinternals/archive/2011/03/26/… Нашел эту ссылку, в которой предлагалось внести изменения в BrowserMatch ". * MSIE [2-5] \ .. *" \ nokeepalive ssl-unclean -shutdown \ downgrade-1.0 force-response-1.0, но потребуется время для его проверки. Между тем не уверен, что у кого-то тоже возникают подобные проблемы, и что они делают для его решения ..
forestclown
Что заставляет вас подозревать, что поддержание жизни связано? Можете ли вы выполнить захват сетевого трафика для подтверждения?
Шейн Мэдден
Это просто дикая догадка, потому что это происходит только в IE9, и в отношении установки apache в настоящее время это единственная установка, которую я заметил, которая делает что-то конкретно с IE ...
forestclown
Вы когда-нибудь решали это? Каково было решение?

Ответы:

3

Скорее всего, настройка сервера / сети где-то имеет проблему и не вызвана какими-либо причудами IE9.

Прежде всего, избавьтесь от древней конфигурации до IE6: SetEnvIf User-Agent ".MSIE." \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0и просто попробуйте запустить ее вообще (в любых формах). Если вам не нужна поддержка IE5, что я сомневаюсь, что вы делаете, в этом случае вы правы, чтобы изменить регулярное выражение наMSIE [2-5]

Балансировщик нагрузки и отсутствие поддержки активности, вероятно, является проблемой. Я бы очень подозрительно относился к балансировщику нагрузки и точно проверял, что там происходит.

Балансировщик нагрузки обычно «балансирует нагрузку» между двумя или более IP-адресами (внутренним или внешним, это не имеет значения в данный момент).

Тогда, не имея keepalive для соединений между запросами, клиентский компьютер / браузер должен будет выполнять согласование SSL для каждого запроса. Объедините это с медлительностью и низкими настройками тайм-аута, и мы можем получить проблемы с несоответствием сертификата SSL, и IE, вероятно, будет освобожден из-за строгой настройки безопасности. Я не исследовал точно, имеет ли IE9 только эту черту. Я подозреваю, что другие браузеры тоже делают это и работают с этим по-другому.

Если вы используете SSL, вы должны иметь KeepAlive, так как это сделает сайт намного быстрее и не придется проходить SSL-согласование снова и снова, что приводит к сбою, потому что балансировщик нагрузки не поддерживает сеанс на одном и том же сервере в течение времени жизни посетителя. ,

Если ваше приложение является внутренним (в интрасети), ваш балансировщик нагрузки случайным образом перебрасывает IP-адреса на вас, и SSL должен быть одинаковым для каждого соединения.

Если это не входит в интрасеть, то это может быть правдой, я не знаю, как настроена ваша сеть, но вам следует сначала проверить это. Отключите балансировщик нагрузки и посмотрите, существует ли проблема. и, безусловно, положить сохранить в живых.

http://httpd.apache.org/docs/2.2/mod/core.html#keepalive

Я бы также проверил, есть ли у вас обратная настройка DNS вообще. Если это указывает на балансировщик нагрузки или сервер позади балансировщика нагрузки или что нет.

Проверьте ваше соединение и проанализируйте ваши заголовки, если внешние используют что-то вроде redbot.org или webpagetest.org, чтобы проверить, какие заголовки отправляются. Также вы можете использовать что-то вроде скрипача

Энтони Хатзопулос
источник
1
ssl-unclean-shutdown все еще требуется для IE> = 6 alexmeyer.com/linux/apachekeepalive.html
user2299634