Windows 8 IE 10 TLS握手到CentOS 6.6上Apache 2.2的错误

我们真的难住这个。 在升级到在CentOS 6.6上运行的更新的Apache环境时,我们遇到了来自Windows 8机器的TLS连接的奇怪问题。 第一个提示错误的是IE10的用户抱怨以及在Windows 8上运行的.NET应用程序调用我们的Web服务。

我们安装了运行IE 10和Fiddler 4的Windows 8的modern.ie虚拟机。我们注意到在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. 

所以我们转到了Web服务器。 服务器正在运行:

 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日志来收集关于stream量的信息。 我们通常会在输出中看到的是:

 [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?!] 

现在其他浏览器,如Windows 8上的IE11和Chrome,也会在服务器日志中产生相同的错误,但是它们就像内置了重试逻辑并将通电一样。 我们尝试了所有我们能想到的:

  • 将SSLCipherSuite更改为各种string。
  • 禁用TLS v1.1和v1.2
  • 从apache提供本地内容,而不是通过mod_proxy访问的后端应用程序服务器的内容。
  • closuresKeepAlive

当我们使用Qualys SSL Lab扫描服务器时,显示的是除IE6 / XP和Java 6之外的所有内容,并且评分为A.

这几乎就像Windows有重复使用SSL连接的问题。 在Windows 8上看不到FireFox的任何错误,因为它使用自己的库而不是SChannel。

任何帮助是极大的赞赏!

谢谢,乔纳森

更新1 – 03/25/2015

我们认为这些问题可能是由R​​edHat完成的backported密码工作造成的,并且与Apache 2.2或Mod_SSL中的某些内容不兼容。 很多移动部件。 我们决定咬紧牙关,在Apache 2.4上构build一个CentOS 7,因为它已经更新了Mod_SSL和OpenSSL库,与6.6分支相比。 这似乎已经修复了我们所看到的所有Windows 8 SChannel错误。 我怀疑这最终会引起RedHat的注意,最终会解决这个问题。

更新2 – 03/25/2015无法让IE10在CentOS 7服务器上出现SChannel错误,但一些.Net客户端仍然报告如下错误:

[Fiddler]与secure.hot.com的连接失败。
System.Security.SecurityException无法与server.fiddler.network.https协商HTTPS连接> HTTPS与secure.ultracart.com握手失败。 System.Security.Authentication.AuthenticationException调用SSPI失败,请参阅内部exception。 <login尝试失败

Update3 – 03/27/2015原来,在协议检测的Web服务器前面的防火墙并不喜欢Windows 8发送的TLS数据包,并且正在终止stream量。