所以我有一个服务器上的多个IP和每个IP我有一个SSL网站configuration。 这工作正常。
但是,我服务于主IP上的一些非SSL站点。 当用户尝试访问其中一个非HTTPS网站的https版本时,会发生此问题。 他们将获得主要SSL网站的证书,然后如果他们接受,他们将被转发到https网站。
什么是处理这个问题的最好方法? 我试图设置一个Apache默认SSL主机来捕获这些其他请求,但它似乎并没有工作。 也许一些redirect逻辑转发请求不是默认的ssl域到所请求的站点的非https版本? 任何想法都表示赞赏。
SSL握手发生在HTTP之前,因此在用户在浏览器中出现SSL警告之前,将不会调用redirect逻辑。
防止发生这种警告的唯一方法是使用名称替代名称或服务器名称指示来提供证书,以显示这些虚拟主机使用的服务器名称 。 这样,SSL握手发生没有问题,并且可以在那之后redirect。 但是,无论您做什么,都需要针对这些非SSL网站的有效证书。
另一种方法是为非SSL站点获取另一个IP地址,然后使用vhost。 基本上,您需要将非SSL站点与SSL站点分开。 这样,用户不会意外地进入SSL虚拟主机并看到浏览器警告。 另一方面,由于SSL端口不可用于非SSL站点,用户将只是获得超时。
第三种方法是不关心人们去SSL主机,如果他们想要访问非SSL网站。 这可能是最便宜和最省力的select,但它可能不适用于您。