Apache 禁用 SSLv2 SSLv3

Apache 禁用 SSLv2 SSLv3

我知道这里有一些与这个主题相关的问题。但我真的不知道我还能做什么。

所以重点是:

  • 我在 OpenSuse 12.3 上使用 Apache 2.2.22。
  • SSLProtocol 选项位于我的 ssl.conf 中
  • 我已经尝试了所有这些选项:

    SSLProtocol ALL -SSLv2 -SSLv3 
    ----------
    SSLProtocol +TLSv1 -SSLv2 -SSLv3
    ----------
    SSLProtocol TLSv1
    ----------
    SSLProtocol -ALL TLSv1
    ----------
    

但无论我尝试什么,所有协议仍然可用......

为什么我无法禁用它?

编辑:所以我已经尝试了很多,所以我想回顾一下:
我只有一个 SSLProtocol 声明,并且将它放在哪里(在我的 vhost conf 或我的 ssl-default conf 中)并不重要。
我知道它已加载,因为使用选项“-all”拒绝所有协议效果很好。拒绝特殊协议不起作用(如选项 -SSLv3)。如果允许一种协议,则每个协议都可用(例如,使用“SSLProtocol TLSv1 -SSLv2 -SSLv3”或“SSLProtocol -all TLSv1”每个协议都可用!)。
一些想法?

答案1

我刚刚用 POODLE 漏洞利用自己解决了这个问题。

仅适用于 OpenSuSE,将以下内容添加到您的/etc/apache2/ssl-global.conf

<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>
  #Your other stuff
  SSLProtocol All -SSLv2 -SSLv3
</IfModule>
</IfDefine>
</IfDefine>

使用以下命令保存、退出并重新启动 apachercapache2 restart

如果仍有任何问题请告诉我。

答案2

看起来你的SSLProtocol ...加载后SSL站点

您可以通过以下方式检查是否属于这种情况:

strace httpd -t 2>&1 | egrep 'open\("\/etc\/(apache(2|)|httpd)\/.*\.conf'

不知道opensuse如何实现apache2,也许使用apache2 -t而不是httpd -t.

如果你的SSL协议低于你的站点会议或或包含您的配置站点定义,该配置不适用于您的站点会议

那么你有两个选择:

  1. 确保SSL协议在您之前加载站点会议
  2. 实施SSLProtocol ...在你的站点会议/站点定义

答案3

尝试这个

SSLProtocol -ALL +TLSv1

代替

SSLProtocol ALL -SSLv2 -SSLv3 
----------
SSLProtocol +TLSv1 -SSLv2 -SSLv3
----------
SSLProtocol TLSv1
----------
SSLProtocol -ALL TLSv1

相关内容