单个IP上的apache http和https

单个IP上的apache http和https

我们的环境中运行着基于名称的虚拟主机的 apache 2.4 web 服务器。该服务器分配有一个 IP(例如 X),通过 NAT 转换为一个私有 IP(例如 Y)。

目前,我的 80 和 443 端口监听如下:0.0.0.0:80 和 0 0.0.0.0:443。
端口 80 上运行着许多网站 [http] [domain1.com、domain2.com 等],
而端口 443 上运行着单个网站 [https] [例如 abc.com]

但当有人错误地输入https://domain.com它显示 SSL 警告并显示 abc.com 的内容。

由于 SSL 不适用于基于名称的虚拟主机,这似乎很正常。但是,当用户在我的环境中托管的非 HTTP 站点上错误地输入 https 时,我如何才能限制用户不查看 abc.com 的页面?

答案1

让端口 443 上的第一个 VirtualHost 提供带有解释的静态 index.html,或者不提供任何服务(然后它返回标准 404 错误,这也是可以的)。

当 VirtualHost 在 httpd.conf 中按文本顺序首先出现或者在 conf.d 目录中按文件字母顺序排列时,它位于第一个位置。

不支持 SNI 的旧浏览器最终都会出现在这里。

指定 abc.com 以外的服务器名称的浏览器也将到达此处。用户仍将看到证书警告,因为您提供的证书与主机名不匹配。所以这是一个丑陋的解决方法。

端口 443 上的第二个 VirtualHost 应该为 abc.com 提供服务。

支持 SNI 的浏览器(所有现代浏览器)最终都会到达这里。

相关内容