没有SSL证书设置的vhosts重定向到使用SSL的其他vhosts



我在多租户服务器上运行apache,配置了vhost站点。

所以我有一个vhost domain1.com,在vhost文件中定义了SSL证书。然后是没有定义SSL证书的domain2.com。如果我访问https://domain2.com,浏览器会打开domain1.com的网站,然后在浏览器中显示一个损坏的SSL证书警告。

我想纠正这个问题的方法是:

首先,在domain2的vhost.conf文件中,我放入如下内容:

 <VirtualHost ip:443>  
 ServerName domain2.com  
 DocumentRoot /var/www/domain2/  
 SSLEngine on  
 SSLCertificateFile /var/certs/cert.crt  
 SSLCertificateKeyFile /var/certs/cert.key  
 Redirect permanent / http://www.domain2.com  
 </VirtualHost>  

当然,这个客户端实际上并不拥有自己的SSL证书,所以我将它指向我们其中一个域的证书文件。在某些情况下,当用户访问https://www.domain2.comhttps://domain2.com时,会收到证书警告。(在Chrome我可以去https://domain2.com和重定向没有警告)

当然,生成用于此目的的自签名证书也会抛出证书警告。如果我删除"SSLEngine On"指令,所以我不需要指定证书,它本质上破坏了整个服务器上的SSL,没有网站正常工作。

我怎样才能成功地做到这一点,而不必担心用户获得证书警告,并简单地重定向他们所有的HTTPS请求domain2.com到HTTP?

你不能。
没有证书警告的正确重定向的唯一方法是为您想要重定向的域提供正确的证书。

重定向在HTTP级别完成,即在由HTTPS连接创建的TLS隧道内。因此,客户端首先需要创建TLS连接,然后才能获得重定向。但是创建TLS连接已经导致证书问题,因为URL中的名称和证书中的名称不匹配。

另一种方法是将所有SSL主机移动到一个IP地址,所有其他主机移动到另一个IP地址。这样,客户端将不会收到证书警告,但会看到此地址上没有HTTPS。

最新更新