我在配置了vhost站点的多租户服务器上运行apache。
因此,我有一个用于domain1.com的vhost,它在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.com或https://domain2.com时,这会向用户发出证书警告。(在Chrome中,我可以转到https://domain2.com,在没有警告的情况下被重定向)
当然,生成用于此目的的自签名证书也会抛出证书警告。如果我删除了“SSL On”指令,这样我就不需要指定证书了,它实质上破坏了整个服务器上的SSLEngine,并且所有站点都无法正常工作。
如何才能在不担心用户收到证书警告的情况下成功完成此操作,并简单地将其对domain2.com的所有HTTPS请求重定向到HTTP?
发布于 2015-08-20 02:13:25
你不能这么做。
要进行正确的重定向而不出现证书警告,唯一的方法是为要重定向的域提供正确的证书。
重定向是在HTTP级别进行的,即在HTTPS连接创建的TLS隧道内完成。因此,客户端首先需要创建TLS连接,然后才能获得重定向。但是创建TLS连接已经导致了证书颁发,因为URL和证书中的名称不匹配。
另一种方法是将所有SSL主机移动到一个IP地址,而将所有其他主机移动到另一个IP地址。这样,客户端将不会收到证书警告,但会看到此地址上没有HTTPS。
https://stackoverflow.com/questions/32102017
复制相似问题