Cor*_*ory 13 ssl virtualhost apache-2.2 apache-2.4
我正在尝试针对涉及在我的 Web 服务器上禁用 SSLv3的贵宾犬漏洞测试补丁。为了首先在非生产环境中进行测试,我在 VirtualHost 上为不同的测试服务器设置 SSLProtocol。我的配置看起来像这样:
<VirtualHost *:443>
SSLEngine On
SSLProtocol All -SSLv2 -SSLv3
ServerName test.mysite.com
# bunch of other stuff omitted
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然而,即使在重新启动 apache 之后,我的测试站点仍然声称易受攻击。这是预期的工作吗?我想知道我是否必须在全局 ssl 配置中设置它,或者是否有其他微妙的东西导致设置不采用和/或工作。
val*_*tis 17
您只能为配置文件中的第一个 VirtualHost 设置 SSLProtocol。所有后续的 VirtualHost 条目将从第一个条目继承该设置,并由于OpenSSL 错误而默默地忽略它们自己的设置。
mod_ssl有相应的错误报告,但正如错误报告中所述,该问题需要在 OpenSSL 中解决(证书是继承的,协议不是继承的)。
必须为每个 VirtualHost 独立设置密码套件,否则您最终会得到默认列表,包括许多不安全的密码。另外,请注意,不支持服务器名称指示 (SNI) 的旧客户端将始终使用默认主机(除非使用 被阻止SSLStrictSNIVHostCheck),这可能会混淆您的测试。
简而言之,您应该能够为每个虚拟主机指定自定义密码套件和证书,但在修复错误之前,不要期望每个虚拟主机的自定义协议都有正确的行为。
我在使用 Apache 2.4 和使用 OpenSSL 1.0.1k 的 modssl 时遇到了这个问题,我希望 Apache 2.2 也会遇到同样的问题。
更新(2016 年 10 月): OpenSSL 错误在 2016 年 10 月 13 日被标记为已解决。然而,这是大规模关闭未解决问题的一部分,尽管提供了“部分修复”,但问题从未得到完全解决。
更新(2018 年 4 月):重新提交的 OpenSSL 错误现在有可用的补丁(截至 2018 年 4 月 9 日)。此补丁将更改配置有多个 SNI 虚拟主机的 Apache 实例的行为:
拒绝不符合 vhost SSLProtocol 的连接
这是使用 2.4.27 开发和测试的,并使用该版本进行生产。该补丁已针对 2.4.33 进行了修改并进行了轻微测试。
这会根据为基于 SNI 匹配的虚拟主机配置的 SSLProtocol 检查连接版本。由于连接最初是使用为端口的默认主机配置的 SSLProtocol 建立的,因此默认主机必须包含任何虚拟主机支持的所有协议。
此补丁在 init_vhost 函数中添加了额外的 APR_EMISMATCH 返回状态,以便使用 OpenSSL 注册的 ssl_callback_ServerNameIndication 回调可以返回致命警报 SSL_AD_PROTOCOL_VERSION。这旨在对 ClientHello 产生与指定不包含相关版本的 SSLProtocol 相同的响应。因为在处理 ClientHello 期间和产生响应之前调用 SNI 回调,所以它似乎正是这样做的。
如果您突然看到以下格式的消息:
Rejecting version [version] for servername [hostname]
Run Code Online (Sandbox Code Playgroud)
然后你应该仔细检查你SSLProtocol的默认主机。
小智 5
如果每个 Vhost 正在侦听不同的 IP,您可以为每个 Vhost 使用不同的 SSL 协议。
特定主机允许 TLSv1 和所有其他主机只允许 TLSv1.1 和 TLSv1.2 的示例 - 一个只允许 TLSv1.2:
<VirtualHost *:443>
SSLEngine On
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
ServerName test.mysite.com
# bunch of other stuff omitted
</VirtualHost>
<VirtualHost 10.0.0.2:443>
SSLEngine On
SSLProtocol All -SSLv2 -SSLv3
ServerName test2.mysite.com
</VirtualHost>
<VirtualHost 10.0.0.3:443>
SSLEngine On
SSLProtocol TLSv1.2
ServerName test2.mysite.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14683 次 |
| 最近记录: |