如何强制到我的 Apache 服务器的所有连接都使用 TLSv1.1 或 TLSv1.2?

信息安全 tls 阿帕奇 openssl
2021-08-17 13:13:41

我在 Ubuntu 12.04(apache 2.2.22-1ubuntu1.4 和 openssl 1.0.1-4ubuntu5.10)和 Ubuntu 13.04(apache 2.2.22-6ubuntu5.1 和 openssl 1.0.1c-4ubuntu8.1)上进行了测试。

这里解释如何这样做,但我有以下问题:

尝试使用时:

SSLProtocol all -SSLv2 -SSLv3 -TLSv1

我收到以下错误:

[错误] 没有可用的 SSL 协议 [提示:SSLProtocol]

尝试使用时:

SSL 协议 TLSv1.1 TLSv1.2

我收到以下错误:

[错误] 没有可用的 SSL 协议 [提示:SSLProtocol]

有趣的是,当我使用:

SSLProtocol all -SSLv2 -TLSv1

apache 没有抱怨,这个测试报告我的服务器不支持 SSLv2 和 TLSv1.0,但是支持 SSLv3、TLSv1.1 和 TLSv1.2。

对这种奇怪的行为有什么解释吗?也许测试工具坏了?

如何仅启用 TLSv1.1 和 TLSv1.2?

3个回答

(这是一个软件配置问题,我感觉要重新定位到 superuser.se...)

要使此配置起作用,有两个先决条件:

  • Openssl-1.0.1(是)
  • httpd-2.2.23(不!)

遗憾的是,SSLProtocol文档没有说明需要的 httpd 版本(尽管它在页面底部的评论部分中注明)。

代码有点复杂:它遍历它知道的协议列表,并消除那些你没有启用的协议。这解释了您看到的行为。

直到并包括 httpd-2.2.22 的代码不解析“TLSv1.1”或更高版本(请参阅modules/ssl/ssl_engine_init.cmodules/ssl/ssl_private.h)。

仅使用TLSv1.2中支持的密码设置SSLCipherSuite绕过了 @ mr.spuratic谈到的 Apache 2.2 解析TLSv1.1字符串的限制。

ubuntu 中的 openssl 不支持 TLSv1.2,他们已禁用它。它记录在 错误 1256576 中