我希望这个标题是清楚的。
如何防止对未启用 ssl 的虚拟主机的 HTTPS 请求转到第一个启用 ssl 的虚拟主机(设置为 Apache-SNI)。
例如,使用下面我的缩写配置,https://example.com
Apache 在启用 ssl 的 vhost 上为(非 ssl vhost)的请求提供服务https://example.org
。我想禁用该行为并可能使用适当的 HTTP 响应代码进行回复(不确定那是什么)。
这甚至可能是不可能的,但我想我会问。
# I actually have a SNI setup, but it's not demonstrated here.
# I don't think it's relevant in this situation.
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example.org
</VirtualHost>
<VirtualHost *:443>
ServerName example.org
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
编辑:也许是第一个 ssl-vhost 中的 mod_rewrite 规则?
正如 Apache 文档所说
ServerName
,当web 请求中没有匹配主机名时,将使用第一个VirtualHost
匹配给定 IP/端口组合的主机名。因此,您只需要提供一个不提供任何内容或您选择的内容的默认虚拟主机,并且它必须是 Apache 在加载其配置时解析的第一个虚拟主机。
如果您根本不希望通过 https 访问特定主机,请将它们放在单独的 IP 地址上,您已将 Apache 配置为不在
Listen
端口 443 上。我知道,已经有一段时间了……但是SSLStrictSNIVHostCheck选项呢?据我了解,这可以解决您的问题。