请提供将通过PCI合规性扫描的Apache SSLCipherSuite

请提供将通过PCI合规性扫描的Apache SSLCipherSuite,apache,pci-dss,pci-compliance,Apache,Pci Dss,Pci Compliance,我正试图让运行Apache 2.2.17的Fedora 14服务器通过McAfee ScanAlert的PCI-DSS合规性扫描。我第一次尝试使用ssl.conf中设置的默认SSLCipherSuite和SSLProtocol指令 SSLProtocol ALL -SSLv2 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP 引用弱密码已启用失败。通过ssllabs和serversniff工具进行的扫描显示,40

我正试图让运行Apache 2.2.17的Fedora 14服务器通过McAfee ScanAlert的PCI-DSS合规性扫描。我第一次尝试使用ssl.conf中设置的默认SSLCipherSuite和SSLProtocol指令

SSLProtocol    ALL -SSLv2
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
引用弱密码已启用失败。通过ssllabs和serversniff工具进行的扫描显示,40位和56位密钥确实可用

然后我改成

SSLProtocol -ALL +SSLv3 +TLSv1
并尝试了各种站点上报告的以下所有字符串,以通过各种供应商的PCI扫描

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH
SSLCipherSuite ALL:!ADH:!NULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:-LOW:+SSLv3:+TLSv1:-SSLv2:+EXP:+eNULL
SSLCipherSuite ALL:!ADH:!NULL:!EXP:!SSLv2:!LOW:RC4+RSA:+HIGH:+MEDIUM
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
SSLCipherSuite ALL:!ADH:!NULL:!EXP:!SSLv2:!LOW:!MEDIUM:RC4+RSA:+HIGH
更新后我重新启动apache,apachectl configtest说我的语法正常。随后的ScanAlert扫描全部失败,其他扫描工具继续显示可用的40位和56位密码。我曾尝试将SSLProtocol和SSLCipherSuite直接添加到httpd.conf中的VirtualHost中,但没有效果

实际上,感觉好像有什么东西正在覆盖这些设置,但除了ssl.conf之外,我在任何地方都找不到任何设置这些值的东西

如果有人能提供一个已知良好的SSLCipherSuite,它已经通过了最近的PCI扫描,这将有助于跟踪我的问题


谢谢。

经过几个小时的搜索和拉扯,我发现了我的问题

myssl.conf中的默认SSLProtocol和SSLCipherSuite指令存储在标记为
的默认容器中

我的实际站点有自己的容器,上面标有IP地址,例如:
。更改
\u default\u
容器中的值没有影响,但将更强的SSLProtocol和SSLCipherSuite指令直接添加到特定于站点的VirtualHost容器中最终使它们生效

仍然不确定为什么调整
\u default\u
容器或将它们放在httpd.conf中的VirtualHost容器中不起作用

作为对这个问题的明确回答,我使用了

SSLCipherSuite ALL:!ADH:!NULL:!EXP:!SSLv2:!LOW:!MEDIUM:RC4+RSA:+HIGH

通过我的扫描警报扫描。我敢打赌,上面的大多数其他字符串也会起作用。

您是否告诉Apache强制执行密码顺序


SSLHonorCipherOrder on

仅供参考-我发现此设置:

SSLCipherSuite HIGH:!SSLv2:!ADH
SSLCipherSuite ALL:!ADH:!NULL:!EXP:!SSLv2:!LOW:!MEDIUM:RC4+RSA:+HIGH
生成了与此设置完全相同的协议列表:

SSLCipherSuite HIGH:!SSLv2:!ADH
SSLCipherSuite ALL:!ADH:!NULL:!EXP:!SSLv2:!LOW:!MEDIUM:RC4+RSA:+HIGH
根据:

openssl ciphers -v 'ALL:!ADH:!NULL:!EXP:!SSLv2:!LOW:!MEDIUM:RC4+RSA:+HIGH'
openssl ciphers -v 'HIGH:!SSLv2:!ADH'

下面的配置是Qualys推荐的,它给了我们一个关于他们的

是的,还要确保Apache能够读取新配置。我将其直接放在虚拟主机容器中

从他们的网站:

看这里


本文档的目标是帮助运营团队配置服务器上的TLS。

随着新漏洞的发现和浏览器的升级,此处的答案可能(将)过时。我建议您依靠来检查应该使用哪种配置

更新2018:现在强制执行完美的前向保密是合理的,除非您需要特别支持较旧的浏览器。截至2018年11月,只有“现代”配置文件才能实现完美的前向保密。更多信息,请访问:


我在禁用sslv2时遇到了类似的问题。在我们的例子中,服务器使用plesk运行。我必须把上面的代码放在
virtualhost
容器之前,而不是放在容器中,这为我们带来了好处。我没有禁用弱密码,但是,由于旧的出口限制,我不确定强密码在非美国国家的使用范围有多广。这是一个可怕的字符串,永远不应该使用(截至2015年)。它允许几个完全不安全的套房。始终使用此配置进行测试在Windows XP上不支持IE6。如果这对您仍然很重要,您可能希望在末尾添加“+RC4 RC4”。这应该被移动为首选答案。请参阅