Windows 8 IE 10 Ошибки рукопожатия TLS для Apache 2.2 на Centos 6.6

Мы действительно в замешательстве. Во время обновления до более новой среды Apache, работающей на CentOS 6.6, мы столкнулись со странными проблемами с соединениями TLS с компьютеров под управлением Windows 8. Первым намеком на ошибку было то, что пользователи IE10 жаловались, а также приложения.NET, работающие в Windows 8, вызывали наши веб-сервисы.

Мы установили modern.ie виртуальную машину Windows 8 с IE 10 и Fiddler 4. Мы заметили, что в Fiddler 4 команда tunnel периодически отображает вывод:

HTTP/1.1 200 Connection Established
FiddlerGateway: Direct
StartTime: 14:59:42.679
Connection: close

fiddler.network.https> HTTPS handshake to hostname.com failed. System.Security.Authentication.AuthenticationException A call to SSPI failed, see inner exception. < The logon attempt failed

Когда мы смотрим в средстве просмотра событий Windows на компьютере, мы видим событие Windows 36887 и сообщение.

A fatal alert was received from the remote endpoint.  The TLS protocol defined fatal alert code is 49.

Итак, мы перешли на веб-сервер. Сервер работает:

httpd.x86_64        2.2.15-39.el6.centos
httpd-tools.x86_64  2.2.15-39.el6.centos
mod_ssl.x86_64      1:2.2.15-39.el6.centos
openssl.x86_64      1.0.1e-30.el6_6.7   @updates

Мы настраиваем журнал DEBUG для сбора информации о трафике. Что мы обычно видим в выводе:

[Tue Mar 24 17:38:08 2015] [debug] ssl_engine_io.c(1935): OpenSSL: I/O error, 5 bytes expected to read on BIO#31854001770 [mem: 3187c0110c3]
[Tue Mar 24 17:38:08 2015] [debug] ssl_engine_kernel.c(1882): OpenSSL: Exit: error in SSLv3 read finished A
[Tue Mar 24 17:38:08 2015] [debug] ssl_engine_kernel.c(1882): OpenSSL: Exit: error in SSLv3 read finished A
[Tue Mar 24 17:38:08 2015] [info] [client 123.125.71.101] (70007)The timeout specified has expired: SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]

Теперь другие браузеры, такие как IE11 и Chrome в Windows 8, также будут генерировать те же ошибки в журналах сервера, но они как будто имеют встроенную логику повторных попыток и пропустят питание. Мы перепробовали все, что могли придумать:

  • Изменение SSLCipherSuite для различных строк.
  • Отключить TLS v1.1 и v1.2
  • Обслуживайте локальный контент из Apache вместо контента с внутреннего сервера приложений, доступного через mod_proxy.
  • Выключите KeepAlive

Когда мы сканируем сервер с помощью Qualys SSL Lab, он показывает совместимость со всем, кроме IE6/XP и Java 6, и получает оценку A.

Как будто у Windows возникают проблемы при повторном использовании SSL-соединения или чего-то подобного. Не вижу никаких ошибок в FireFox в Windows 8, потому что он использует свою собственную библиотеку вместо SChannel.

Любая помощь с благодарностью!

Спасибо Джонатан

Обновление 1 - 25.03.2015

Мы решили, что некоторые из проблем могут быть вызваны работой зашифрованного бэкпорта, выполненной RedHat, и несовместимостью с чем-то в Apache 2.2 или Mod_SSL. Много движущихся частей. Мы решили укусить пулю и собрать CentOS 7 на Apache 2.4, поскольку он обновил библиотеки Mod_SSL и OpenSSL по сравнению с веткой 6.6. Похоже, это исправило все ошибки Windows 8 SChannel, которые мы видели. Я подозреваю, что это в конечном итоге привлечет внимание RedHat, и в конечном итоге будет выпущено решение этой проблемы.

Обновление 2 - 25.03.2015 Не удается получить в IE10 ошибку SChannel с сервером CentOS 7, но некоторые клиенты.Net по-прежнему сообщают об ошибках, подобных этой:

[Fiddler] Соединение с secure.hot.com'не удалось.
System.Security.SecurityException Не удалось согласовать HTTPS-соединение с server.fiddler.network.https> HTTPS-соединение с secure.ultracart.com не удалось. System.Security.Authentication.AuthenticationException Сбой вызова SSPI, см. Внутреннее исключение. <Попытка входа не удалась

Обновление 3 - 27.03.2015 Оказывается, что брандмауэр перед веб-сервером, который выполняет проверку протокола, не любил что-то о пакетах TLS, отправляемых Windows 8, и прерывал трафик.

0 ответов

Другие вопросы по тегам