KeepAlive в Apache 2.4, вмешивающемся в представления формы

Я только что обновил сервер до Debian Jessie, которая включает Apache 2.4.10 (был 2.2), и PHP 5.6.

Теперь, сайты SSL не отправят формы при некоторых обстоятельствах на IE11 и Safari iPad (не уверенный в настольном Safari). Firefox и Chrome оба хорошо. Когда это перестало работать, это производит ошибочную страницу "This page can not be displayed" IE в IE. Только подчеркнуть: Я могу добраться до сайта и видеть форму, это - представление формы, которое затем перестало работать.

Это связано с KeepAlive и SSL в некотором роде. Если я выключаю KeepAlive в SSL VirtualHost, проблема уходит. (Это использует SNI, хотя одним из сайтов, показывающих ошибку, является первый SSL один). Я использую mpm-itk (и был перед обновлением).

В IE11 (в Windows 7), это происходит с * SSL (HTTPS) * Apache KeepAlive На, KeepAliveTimeout 5 (значение по умолчанию) * формы с загрузками файла (так enctype=multipart/form-data), * только, когда файл на самом деле предоставляется (он в порядке без файла с или с другими полями; даже 1-байтовый файл заставляет это перестать работать, не зависимый размера файла). *, только если загрузка запускается в течение 60 секунд после отображения формы (т.е. хорошо при отъезде его за 60 секунд до нажатия Submit),

Нет никаких подсказок относительно того, что перестало работать. Нет ничего в журналах сервера, чтобы показать, что это связалось с сервером снова. Ошибка непосредственна. Нет ничего в отладчике IE, кроме которого это говорит" (Прерванный)" в столбце результата сетевой страницы, и "Навигация произошла: Файл: dnserror.htm", который я принимаю, является просто страницей, которую это отображает, но несмотря на имя нет никакой ошибки DNS насколько я могу сказать. Скрипач не показывает сетевого трафика, когда я нажимаю кнопку отправки. В средстве просмотра события Windows нет ничего соответствующего. Это - самая странная вещь об этом - это, даже кажется, не пробует.

Для Apache 2.4 я настроил SSL, как рекомендуется здесь: https://mozilla.github.io/server-side-tls/ssl-config-generator/? server=apache-2.4.10&openssl=1.0.1k&hsts=no&profile=intermediate. CiperSuite неизменен от моих настроенных 2.2, но выход OCSP теперь включен. Основные 2,4 изменения являются TLS1.2 (но Fidler понижает это, я верю, таким образом, это вряд ли будет это). HSTS включен, но был ранее. SSLLabs дает сайт + оценка и не указывает ни на какие ошибки.

Я попытался изменить KeepAliveTimeout на 60; и также возвращаясь в старом BrowserMatch ".MSIE". ssl-небезопасное-завершение-работы nokeepalive понижает 1,0 force-response-1.0 и BrowserMatch ".MSIE". ssl-небезопасное-завершение-работы как эксперимент, и я думаю, что это действительно имеет некоторый эффект, а именно, что это затем работает после первой попытки. Но первый доступ от недавно запущенного браузера все еще перестал работать. Возможно это вызвано тем, что это не может определить браузер до окончания согласования SSL, которым временем слишком поздно, но после этого браузер имеет больше информации? Также возможно, что я не могу пройти этот процесс через менее чем 60 секунд, таким образом, второй раз в порядке из-за этого так или иначе.

Я сделал немного испытательной площадки, которая демонстрирует проблему: https://iet.davidearl.uk. Это имеет самоподписанный сертификат только для тестового сценария, таким образом, существует предупреждение сертификата на первом движении там, но это не имеет место с реальными сайтами, которые имеют проблему. Вся сторона сервера делает в тестовом сценарии, эхо имя файла отправленного файла, иначе источник HTML - все, которое существует.

На iPad проблема кажется хуже, если что-либо. Это, кажется, не может отправить формы вообще (при отображении их прекрасный; независимо от того, есть ли у них загрузки файла). Иногда это просто зависает, иногда это имеет внутренне сгенерированную ошибочную страницу ("Safari, не может открыть страницу, потому что сетевое соединение было потеряно"), завися, как форма создается. Снова, тем не менее, общий множитель - то, если Вы ожидаете 60 секунд и затем нажимаете кнопку отправки, он работает. Старая версия Safari для ПК (5.1.7) работы хорошо все же.

IE9 на (другая копия) Windows 7 ведет себя как Safari iPad - это просто зависает, если Вы не ожидаете спустя 60 секунд после отображения формы. Microsoft Edge в Windows 10 и IE на Поверхностном планшете RT также, кажется, перестали работать таким же образом как IE11. Я также наблюдал один случай, где PHP "file_get_contents ("https..." доступ к серверу последовательно зависает в течение точно 60 секунд перед следованием, которое работало немедленно ранее.

Я попробовал http://superuser.com/questions/516030/apache-2-4-on-windows-responds-slowly-hangs-when-serving-some-dynamic-pages - никакое изменение Это, возможно, связано, но в их случае KeepAlive От имеемого никакой эффект; и выключение брандмауэра сервера временно не имеет никакого значения: http://serverfault.com/questions/678009/windows-8-ie-10-tls-handshake-errors-to-apache-2-2-on-centos-6-6 я попытался переупорядочить SSLCipherSuite для помещения ECDHE-RSA-AES128-SHA256 выше список (например, как предложено здесь: http://serverfault.com/questions/677338/why-is-internet-explorer-11-unable-to-connect-to-https-sites-when-tls-1-2-is-ena), Очищают состояние SSL на интернет-Свойствах>, Содержание не имеет никакого значения.

Существует ясно проблема, связанная с KeepAlive и SSL, который не распространен, но я мистифицирован относительно того, что это, и нет никаких подсказок, чтобы помочь мне узнать. Обширный поиск не привел ни к чему полезному.

2
задан 24 August 2015 в 17:31
2 ответа

Я столкнулся с точно такой же проблемой (потратил несколько дней на то, чтобы таскать за собой волосы!).

Оказывается, это ошибка в mpm-itk (см. http://lists.err.no/pipermail/mpm-itk/2015-September/thread.html). Эта ошибка исправлена ​​в последней версии, выпущенной вчера.

Вы можете загрузить эту новую версию по адресу http://mpm-itk.sesse.net/ , но вам придется скомпилировать ее самостоятельно из источник. Это довольно просто, если следовать инструкциям в файле README.

3
ответ дан 3 December 2019 в 10:41

Спасибо за вопрос! И cividesk за ответом. Я тоже использую ITK (не уверен, почему больше людей этого не делают - дает полезное разделение привилегий между виртуальными хостами).

Я не хотел перекомпилировать материал, чтобы избавиться от этой ошибки, предпочитая верить, что однажды он сделает его в Jessie, и apt-get волшебным образом исправит его. Но мои клиенты не могут ждать до тех пор!

Я заметил, что в некоторых версиях jQuery это происходило чаще, чем в других, в IE. Так что я решил половину своей проблемы, отказавшись от используемой версии jQuery. Но Safari все еще оставался проблемой - иногда он работал, иногда молча терпел неудачу.

Я получил эту работу в файле конфигурации Apache setenvif.conf , который я отредактировал, чтобы включить:

BrowserMatch "Mac OS X" nokeepalive

( за эту идею нужно отдать должное )

Таким образом, поддержка активности отключается для пользователей Mac. Хотя я не сомневаюсь, что это немного замедлит их работу, это лучше, чем убивать UX / неработающую IMO.

0
ответ дан 3 December 2019 в 10:41

Теги

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