在 Apache 中禁用 SSLv3 但仍支持 SSLv2Hello

在 Apache 中禁用 SSLv3 但仍支持 SSLv2Hello

许多 SSL 客户端(尤其是 JDK 6)使用 SSLv2Hello 协议与服务器握手。使用此协议不是意味着你正在使用 SSL 2.0 或 3.0;它只是一种握手方式来确定哪个使用的协议。[https://www.rfc-editor.org/rfc/rfc5246#appendix-E.2]

然而,在 Apache 中,如果您禁用 SSLv3 支持,这显然会删除对 SSLv2Hello 协议的支持。Apache Tomcat 明确支持 SSLv2Hello;也就是说,您可以启用它,但不能启用 SSLv3。

有没有办法在 Apache 中做到这一点?

[更新]

这是我的协议配置:

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

答案1

显然 mod_ssl 在过去一年左右发生了变化(我还没有找到源代码的确切提交,但发现了“问题”)。源代码现在这样做:

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

此设置无法覆盖。你唯一能做的就是编辑源代码,重新编译你自己的版本。我创建了一个差异如果您想编译自己的,则强制 SSLv2 握手兼容性。

答案2

所以事实证明这一直都不是问题。Apache 将接受我上面发布的任一配置的 SSLv2 握手。我被握手错误误导,以为这就是问题所在;这实际上只是一个配置问题,即服务器不信任客户端的 CA。

相关内容