无法在 Apache 2.4.18 中禁用 TLSv1/TLSv1.1

无法在 Apache 2.4.18 中禁用 TLSv1/TLSv1.1

客户要求我在 Web 服务器上禁用 TLSv1 和 TLSv1.1。该服务器正在运行 Apache 2.4.8 和 OpenSSL 1.0.2g。

我已将指令添加到/etc/apache2/mods-enabled/ssl.conf

SSLProtocol TLSv1.2

重新启动 Apache2 并在 SSL Labs(以及另外两个工具)上运行测试表明 TLSv1 和 1.1 仍然处于启用状态。根据 Google 搜索,我尝试了很多 SSLProtocol 指令的变体:

SSLProtocol -all +TLSv1.2
SSLProtocol +TLSv1.2 -TLSv1.1 -TLSv1
SSLProtocol +all -TLSv1.1 -TLSv1

它们都不起作用。我也尝试将指令添加到/etc/apache2/apache2.conf。这也没有什么区别。

我不知道该如何继续。

答案1

客户要求我在 Web 服务器上禁用 TLSv1 和 TLSv1.1。该服务器正在运行 Apache 2.4.8 和 OpenSSL 1.0.2g。

这是适合您描述的配置。

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1    
SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder     on    
SSLCompression          off    
SSLSessionTickets       off

来源:apache 2.4.18 | 现代配置文件 | OpenSSL 1.0.1g

您可以将密码套件列表缩减为以下内容:

SSLCipherSuite HIGH:!aNULL:!MD5:!RC4

来源:如何强制所有 Apache 连接使用 TLSv1.1 或 TLSv1.2

答案2

在 Apache 中,如果您启用了虚拟主机,则这将不会生效。

要解决此问题,请将设置添加到您的虚拟主机文件中,因为这可以针对每个虚拟主机进行控制;

即在 /etc/apache2/sites-enabled/ 下,您可能会找到多个文件,每个文件用于一个网站,您可以在每个文件中进行不同的设置。

对我而言有用的常见设置是:

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLSessionTickets off

相关内容