EC2 Ubuntu服务器上的SSL问题

我有一个Ubuntu的EC2服务器。 其运行多个网站和其中一个网站使用SSL证书。 SSL运行良好,但问题是,当您使用https键入其中一个域的URL并添加一个SSL域的页面的地址时,您可以看到SSL域页面。

例如https://domain.com/page/1是原始页面。 如果您键入https://domain2.com/page/1,您将看到SSLconfiguration域的原始页面。 如果您从https://domain2.com/page/1删除https,那么它的http://domain2.com/page/1您将看到没有find应该看到的页面。

对不起,但这是很难解释,我以前从来没有遇到过。 我必须有一些Apacheconfiguration错误,但我不知道是什么。

问题:

您只有一个SSL虚拟主机,以便一个SSL虚拟主机将匹配所有SSL请求,而不pipe域名。

可能的解决scheme:

为每个域启用SSL。

为您的服务器托pipe的每个域获取SSL证书。 为每个域configuration一个虚拟主机。

这只会帮助支持SNI的浏览器。 不支持SNI的浏览器将获得第一个SSL虚拟主机,无论使用哪个域。

创build一个没有内容的“默认”SSL虚拟主机。

使用自己的证书创build一个默认的SSL虚拟主机。 像webserver.example.com。

这只适用于支持SNI的浏览器。 不支持SNI的浏览器即使在尝试查看“真实”SSL虚拟主机时也会收到默认虚拟主机。

获取涵盖所有域的SAN证书。

再次,为每个域设置一个SSL虚拟主机,但他们都使用相同的SAN证书。

即使不支持SNI的浏览器也能正常工作,但是如果您想在以后添加更多的域名,则会变得非常痛苦。

我find了一个正在工作的解决scheme,但我不认为它是最好的解决scheme。 我继续创build了一个通用的自签名证书,用于没有configurationSSL或SSL证书的其他域。 然后,我为每个域创build并启用了虚拟主机文件。 如果有人有更好的解决scheme,请分享。

如果你安装了openssl-1.X和一个支持它的web服务器,你可以使用SNI,代表服务器名称指示,它的作用就像虚拟主机的SSL虚拟主机一样。

只要编译openssl-1.X和你的web服务器链接到新编译的库,你可以有virtualhosted SSL域!

干杯

其他答案应该是正确的。

您的问题:没有SSL的域名在有https前缀时会redirect到SSL域名。

原因:服务器发现您通过https访问域,并将您redirect到发放SSL证书的域。

解决scheme:将您没有SSL的域的每个域从httpsredirect到http。 国防部重写可以为你做到这一点通过转换请求击中你的非SSL域尝试连接通过HTTPS(导致redirect)通过HTTP连接(不触发redirect。

让我知道如果解决这个问题。

您的问题是服务器redirect到您的SSL证书指向的域。 所有服务器都知道您的客户端正在尝试通过https访问站点,并且它具有指向您的SSLed域的SSL。 您需要明确告诉它将非https域redirect到http来解决问题。

为了达到这个目的,你可以使用mod_rewrite,在.htaccess文件中添加以下内容:

RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}