如何在 apache 中禁用 TLS 1.0 和 1.1?

Dav*_*vid 50 ssl pci-dss apache-2.4

有谁知道为什么我不能通过更新配置来禁用 tls 1.0 和 tls1.1。

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 
Run Code Online (Sandbox Code Playgroud)

这样做之后,我重新加载了 apache 我使用 ssllabs 或 comodo ssl 工具进行了 ssl 扫描,它仍然说支持 tls 1.1 和 1.0。我想删除这些?

HBr*_*ijn 67

当您有多个 TLS VirtualHosts 并使用 Server Name Indication (SNI) 时,允许SSLProtocol 为每个 VirtualHost 指定一个指令的语法,但除非您在实践中拥有 IP VirtualHosts,否则该SSLProtocol指令第一次出现时的设置将用于整个服务器和/或所有支持 TLS 1的基于名称的 VirtualHosts 。

因此,请检查您的主要httpd.conf(以及所有包含的片段,例如conf.d/*.conf和类似的包含)以获取更多出现的SSLProtocol指令。

你的语法是正确的,虽然我同意ezra-s 的回答,当你扩展all速记时,你可以稍微改进:

 SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 
Run Code Online (Sandbox Code Playgroud)

只需使用:

 SSLProtocol TLSv1.2
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 Letsencrypt,请不要忘记检查 `/etc/letsencrypt/options-ssl-apache.conf` (15认同)
  • 我想我会建议对您不想要的协议使用带减号的“全部”。随着新标准的开发和旧标准被发现不安全,Apache 的未来版本对“所有”的定义不同。 (7认同)
  • 误报,这确实是由 comodo 和 ssllabs 报告缓存的。现在看来报告是正确的。谢谢。 (2认同)
  • 由于“/etc/letsencrypt/options-ssl-apache.conf”位于“/etc/apache”之外,任何依赖“grep -r”的人都可以轻松监视它。我自己刚刚遇到了这个问题,因此无法充分强调@Memes 的声明。 (2认同)
  • 我不会使用 `SSLProtocol TLSv1.2` 变体,因为它会错过新的 TLS 协议。您必须记住,您在某处明确设置了协议,并且必须在 TSLv1.4 到来后添加新协议。这不是面向未来的。 (2认同)

ezr*_*a-s 11

您指定的就足够了,它不应该显示任何其他协议。记住 SSLLABS 缓存最近的测试。尽管知道没有其他协议像您一样定义它,但故意有点令人费解。

在任何情况下,您都可以使用它或简单地:

SSLProtocol TLSv1.2
Run Code Online (Sandbox Code Playgroud)

  • `SSLProtocol TLSv1.2` 确实比使用过时协议的否定列表的常见方法更短。但是,您将无法自动利用 TLSv1.3 等较新的协议。 (2认同)

小智 6

在 Apache 中禁用 TLS1.0 版本。

如果您有多个虚拟主机,那么您必须更新所有配置文件,否则,ssl.conf 就足够了。

要检查 TSL 支持版本:

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.0:
|   TLSv1.1:
|   TLSv1.2:
Run Code Online (Sandbox Code Playgroud)

修改 Apache 配置文件vi /etc/httpd/conf.d/web.conf删除所有 TLS 并只允许 TLS1.2。

SSLProtocol TLSv1.2
Run Code Online (Sandbox Code Playgroud)

修改后验证。

# grep SSLProtocol /etc/httpd/conf.d/web.conf
SSLProtocol TLSv1.2

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.2:
# service httpd restart
Run Code Online (Sandbox Code Playgroud)


小智 6

我也在努力解决这个问题,使用SSLProtocol指令修改配置不起作用。我最终将以下内容添加到我的虚拟主机配置中:

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好。您可以在此处阅读有关该SSLOpenSSLConfCmd指令的更多信息。