2016-09-07 56 views
1

我有一个Apache服务器设置为侦听端口80上的几个域名和443两个(至少这是我想要的)。 所以我有我的Virtualhost *:443与“my-ssl-domain.com”和“my-other-ssl-domain.com”ServerName。这两个域也都有一个Virtualhost *:80,它使用mod_rewrite重定向到HTTPS版本。我使用让我们加密他们两个。使Apache不监听某些域的端口443

我也有多个(> 10)其他域只能通过HTTP工作。

发生什么事是,如果我去“https://www.my-non-ssl-domain.com”浏览器抱怨没有有效的证书。谷歌似乎也索引该网页,我想避免它,因为它似乎是不好的搜索引擎优化。

我希望它301重定向“https://www.my-non-ssl-domain.com”到“http://www.my-non-ssl-domain.com”或至少根本不应答,就好像HTTPS的域根本不存在一样。

我该如何解决这个问题?

+1

然后不要使用'Virtualhost *:443',而是明确地指定一个主机名。 – CBroe

+0

你是什么意思?我没有提到Apache在所有域(SSL和非SSL)上侦听相同的IP地址。 – koichirose

+0

如果你使用'*:443',那么这个VirtualHost将被用作没有显式指定他们的“own”VH的所有主机名的后备。所以你需要使用像'Virtualhost somedomain.local:443'这样的表示这个VH仅用于特定的域(加上ServerAliases),但不适用于每一个没有显式配置的传入HTTPS请求。 – CBroe

回答

0

没有正确的证书,没有办法回应(没有警告)https://请求,这就是协议的工作原理。 有几个选项,但它们都可能对您最佳:

  1. 有两个公共IP地址,使用一个站点既http + https,另一只http。然后将Apache配置为仅在第一个端口上侦听端口443。

  2. 让我们加密证书的成本(几乎)没有什么,所以只要去获得所有域名的证书(即使你出于某种原因不想通过https提供内容,至少你将能够正确地重定向游客到http网站)

  3. 我不知道的SEO后果,但如果配置默认<VirtualHost *:443>像这样(您需要将它所以这是第一个虚拟主机:443 Apache的加载,最好是把它在httpd.conf的底部):

<VirtualHost *:443> 
ServerName non.existing_host.noTld 
</VirtualHost> 

在这种情况下,客户不会得到证书不匹配的警告(NET::ERR_CERT_COMMON_NAME_INVALID),他们将disonnected由于SSL协议错误(ERR_SSL_PROTOCOL_ERROR),这可能是也可能不是更好的搜索引擎优化,我真不”不知道。

+0

我只是为我的两个SSL域设置了两个IP地址。我只会在这些域上收听443,所以它应该被修复。谢谢。 – koichirose