我们真的难住这个。 在升级到在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,也会在服务器日志中产生相同的错误,但是它们就像内置了重试逻辑并将通电一样。 我们尝试了所有我们能想到的:
当我们使用Qualys SSL Lab扫描服务器时,显示的是除IE6 / XP和Java 6之外的所有内容,并且评分为A.
这几乎就像Windows有重复使用SSL连接的问题。 在Windows 8上看不到FireFox的任何错误,因为它使用自己的库而不是SChannel。
任何帮助是极大的赞赏!
谢谢,乔纳森
更新1 – 03/25/2015
我们认为这些问题可能是由RedHat完成的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量。