我正在运行一些由Apache / Linux提供服务的小型网站。 目前,我正试图尽可能地减lessSSLconfiguration,使其尽可能安全。
我已经configuration了Apache,以便它只允许TLS 1.2和只有密码与DHE或ECDHE密钥交换。 最新版本的Firefox和Chrome(按照撰写本文的时间)完美地连接到此服务器上的网站。
但标准configuration中的Internet Explorer 11(在Windows 7 x64下运行)无法连接到任何这些网站。 Wireshark捕获的信息显示IE在其第一个客户端hello中尝试TLS 1.2,向服务器显示其密码等等,服务器的答案是正确的,包括select的密码。
然后,似乎无缘无故,IE重新启动,并发送一个新的客户端你好,这次使用TLS 1.0,这当然失败,使IE认为它不能连接到网站。
在IE浏览器中有一个错误,在正确的协议已经成功build立之后,它会尝试错误的协议? 一个错误,可能只发生在服务器只提供TLS 1.2(这可能很less见)?
我们有一些Windows 7的盒子有相同的行为。 最后,我们需要安装MS14-066来启用一些额外的密码。 不知道为什么从2014年底的补丁没有安装,但你去。
你的旅费可能会改变。
我遇到过使用IE 11和Apache 2.4的类似问题。 与客户端身份validation(端口843),我已经解决了我的问题,修改IEconfiguration,最后修改“<VirtualHost …>”部分的Apache SSLconfiguration。
第一部分解决问题:客户端configuration
菜单“ 工具 – > Internet选项 – >高级 ”,在“ 安全 ”部分,取消选中SSL2.0和SSL 3.0 ,然后确保已选中TLS 1.0,1.1和1.2 ,然后单击“应用”button。
通过相同的菜单“ 工具 – > Internet选项 – >内容 ”,单击“ 清除SSL状态 ”button。
closuresInternet Explorer,重新打开它并尝试访问该网站。
也许在你的情况下,你只需要检查TLS 1.2 。 尝试使用不同的组合启用TLS,但不要启用SSL来避免问题。
最后我尝试了SSL3.0 + TLS1.0 + TLS1.1 + TLS1.2 ,并且工作正常。
无论如何,如果您使用SSL2.0 + TLS 1.2,访问您的网站将崩溃,因为它们不兼容。
第二部分解决问题:服务器configuration
看看你的网站的虚拟主机部分在Apache“config /”确保在任何部分,如“<VirtualHost *:[端口]>”你的域名在“ServerName”参数和[PORT](特别是最后一个动作,明确解决了我的问题)
例如。
ServerName http://www.your-domain.com:80
ServerName http://www.your-domain.com:443
ServerName http://www.your-domain.com:843
不要忘记在“conf / extra /”目录(这个path和文件名取决于你的Apache服务器的安装)上的http-ssl.conf文件中查找,在这里你可以find一个默认虚拟的“ServerName”参数主机部分。
我希望能帮到你。
检查您是否使用MD5证书,因为Internet Explorer 9/10/11和Edge会在服务器提供使用MD5algorithm的证书链时终止连接,如本博客末尾所述:
如果服务器与使用Windows 7或8
schannel.dll客户端应用程序协商TLS1.2连接,并提供使用(弱)MD5哈希algorithm的证书链,则客户端将中止连接(TCP / IP FIN )在收到证书后。
用关键字md5 tls1.2search可以发现这篇博客文章TLS 1.2握手失败 ,更详细地描述了同样的问题。 基本上,根据RFC5246传输层安全性(TLS)协议版本1.2 ,MD5不再被认为是一个安全的散列函数,所以schannel.dll遵循RFC并拒绝MD5证书链。
虽然我明白其中的基本原理,但是如果错误信息更为具体,则更容易排除故障。 因此,我已经向 bug跟踪器提交了一个问题 。
交换SHA-256 1证书应该可以解决问题。
1 SHA-1也可以工作,但不再推荐