在Apache中禁用SSLv3,但仍支持SSLv2Hello


12

许多SSL客户端(尤其是JDK 6)使用SSLv2Hello协议与服务器握手。使用此协议并不能意味着你正在使用SSL 2.0或3.0为此事; 确定使用哪种协议仅仅是一次握手。[ http://tools.ietf.org/html/rfc5246#appendix-E.2]

但是,在Apache中,如果禁用SSLv3支持,则显然会删除对SSLv2Hello协议的支持。Apache Tomcat对SSLv2Hello具有显式支持。也就是说,您可以启用它,但不能启用SSLv3。

在Apache中有什么方法可以做到这一点?

[更新]

这是我的协议配置:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3

However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. 我正在运行Apache 2.2,SSLProtocol all -SSLv2 -SSLv3并且SSL 2握手有效。您正在运行什么配置,就遇到了问题。我知道禁用SSL 2握手的唯一方法是启用FIPS模式。
克里斯S

1
什么是疼痛处理在2014年:(即传统支持它的时间给大家核弹的SSLv2和SSLv3和使通用的扩展支持(如SNI)。
泽维尔·卢卡斯

2
@XavierLucas我指定了我支持的TLS协议,而不是全部使用-SSLv2,-SSLv3。我不知道为什么会有所不同,但我会进行测试。
马特·休斯

@ChrisS我同时尝试了两种方法:SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3和所有-SSLv3 -SSLv2。这与Apache 2.4.10一起运行。两种配置似乎都不允许SSL 2握手。而且我还没有接触过FIPS模式;默认为禁用。
马特·休斯

Answers:


7

显然,mod_ssl在过去一年左右的时间里发生了变化(我尚未找到对源代码的确切提交,但找到了“问题”)。源现在执行此操作:

If SSLProtocol only includes only one Protocol:
    Handshake = That Protocol's Handshake Only
Else
    Handshake = SSLv2 Handshake

此设置没有替代。您唯一可以做的就是编辑源代码,重新编译自己的版本。如果您要自己编译,我创建了一个差异以强制SSLv2握手兼容性。


1
我可以确认,克里斯的补丁程序会有所帮助-尽管SSLv3已被禁用,但是curl(和使用gitcurl的程序,例如git)现在可以再次与我们的服务器通信-而不会sslscan标记任何漏洞。但是该补丁似乎有些侵入性,我想请克里斯将其提交给Apache项目,以便尽快进行审查。如果克里斯不这样做,我将自己出票:-)非常感谢克里斯,克里斯!
Mikhail T.

1
最好添加一个单独的指令来强制兼容模式。如果我有空闲时间,我会把它写出来,但是从长远来看,我认为这个“补丁”不是一个好主意。
克里斯·S

是的,这似乎是Apache开发人员正在考虑的问题。请参阅[线索] [1]我开始有... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/...
米哈伊尔·T.

1

因此,事实证明,这一直以来都不是问题。Apache将接受具有我上面发布的任何配置的SSLv2握手。握手错误使我误以为这是问题所在。这实际上只是服务器不信任客户端CA的配置问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.