4

我有一个具有多个命名主机的 apache 服务器,所有这些主机都可以正常工作于端口 80 http 流量。(具有唯一 IP 地址的 VPS)

我有一个具有 SSL 证书的域,并且该域被配置为同时处理 http 和 https 流量。

但是,如果有人不小心将 https 添加到未配置 SSL 的 URL 的开头,我会收到典型的证书警告错误(预期),然后如果用户接受错误(取决于浏览器),它会显示我配置的 SSL 站点而不是原始的非 ssl 域。

我已经阅读了一些关于 SNI 的内容,但我没有其他每个域的证书,并且希望服务器要么不响应除一个特定域之外的任何其他域的 SSL 请求,要么重定向到 http 版本的地点。

请就我如何处理这个问题提出建议。

亲切的问候,斯宾塞

4

1 回答 1

0

出于安全原因,您尝试实现的目标无法实现。

浏览器(实现了检查证书的机制)无法知道用户https://http://无意还是有意键入的。由于最终取决于用户https://在他们认为需要时检查使用的内容,因此浏览器应该简单地执行用户请求的操作。

https://to的重定向http://应始终以有效https://连​​接开始。如果您无法获得初始连接的有效证书,那么 SNI 将无法为您提供太多帮助。

否则,浏览器假设可能正在进行 MITM 攻击是公平的。显式输入https://(或使用 HSTS)是唯一可靠的机制来对抗像 SSLstrip 这样的 MITM 工具,否则它们能够降级(或阻止从 升级http://https://)。

于 2013-10-14T12:52:04.670 回答