Aar*_*ain 2 ssl pci-dss apache-2.4
查看 CentOS 7 服务器上 SSL 协议可能被覆盖的最佳方式是什么?Apache 2.4.6(意识到这也很旧,所以我必须在下班时间更新它,看看它是否解决了问题)。
我正在尝试在我的配置根目录 (/etc/httpd/conf/httpd.conf) 中使用此 Apache 指令禁用 TLSv1
SSLProtocol -all +TLSv1.1 +TLSv1.2
Run Code Online (Sandbox Code Playgroud)
然而,当我运行任一nmap --script ssl-enum-ciphers -p 443 <mysite.com>
它显示 TLSv1 仍然启用:
ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
| compressors:
| NULL
| cipher preference: server
Run Code Online (Sandbox Code Playgroud)
SSL实验室测试也揭示了同样的情况。
SSLProtocol
虚拟主机中没有提供其他指令。
之后,我决定使用此命令搜索所有配置文件sudo grep -rnw '/etc/httpd' -e 'SSLProtocol'
,它显示了以下位置:
/etc/httpd/conf/httpd.conf:359:SSLProtocol -all +TLSv1.1 +TLSv1.2
/etc/httpd/conf.d/ssl.conf:74:SSLProtocol ALL -SSLv2 -SSLv3
/etc/httpd/conf.d/ssl.conf:227:SSLProtocol ALL -SSLv2 -SSLv3
/etc/httpd/conf.d/ssl.conf:257:SSLProtocol ALL -SSLv2 -SSLv3
/etc/httpd/conf.d/ssl.conf.rpmnew:75:SSLProtocol all -SSLv2 -SSLv3
Run Code Online (Sandbox Code Playgroud)
所以我进入 ssl.conf 文件并更改第 74 行以匹配,问题仍然存在。第 227 行和第 257 行适用于我当前未测试的两个虚拟主机,但稍后我会更新。
编辑:尽管剩下的两行用于虚拟主机,并给出了有关 OpenSSL bug 的答案,我更改了所有引用SSLProtocol -all +TLSv1.1 +TLSv1.2
并重新启动了我的服务器,但没有任何改变。为什么会这样呢?我想知道这是否是 Apache 2.4.6 本身的一个错误。
我通过意外的修复解决了这个问题。我在 Bugzilla 上发现了这个问题,并正在研究它,后来有人提到 Let's Encrypt/etc/letsencrypt/options-ssl-apache.conf
在该文件中有一个独立的文件,其中有一个设置:
SSLProtocol all -SSLv2 -SSLv3
Run Code Online (Sandbox Code Playgroud)
Certbot 会自动在虚拟主机配置中安装对此文件的引用,并且该证书恰好安装在我的服务器配置中的第一个虚拟主机上。我对其进行了更改以匹配我之前的设置,SSLProtocol -all +TLSv1.1 +TLSv1.2
并且效果非常好。
笔记: