我有一个带有多个命名主机的apache服务器,所有这些都适用于端口80 http流量。 (具有一个唯一IP地址的VPS)
我有一个拥有SSL证书的域,并且该域配置为同时处理http和https流量。
但是,如果有人意外地将https添加到无SSL配置的URL的开头,我会收到典型的证书警告错误(预期),然后如果用户接受错误(取决于浏览器),则会显示我已配置的SSL站点而不是原来的非ssl域。
我已经阅读了一些关于SNI的信息,但是我没有其他每个域的证书,而且除了一个特定域或者重定向到http之外,服务器不会响应SSL请求。该网站的版本。
建议我如何处理这个问题。
亲切的问候,斯宾塞
答案 0 :(得分:0)
出于安全考虑,您尝试实现的目标无效。
浏览器(实现检查证书的机制)无法知道用户是否意外或故意键入https://
而不是http://
。由于最终由用户在他们认为需要时检查https://
是否被使用,因此浏览器应该只执行用户请求的操作。
从https://
到http://
的重定向应始终以有效的https://
连接开头。如果您没有初始连接的有效证书,SNI对您没有多大帮助。
否则,浏览器认为可能存在MITM攻击是公平的。明确地(或使用HSTS)键入https://
是针对像SSLstrip这样的MITM工具的唯一可靠机制,否则它将能够降级(或阻止从http://
升级到https://
)。