繁体   English   中英

每个带SSL的Apache服务器上有多个站点,显示带有HTTPS的错误站点

[英]Multiple sites per Apache server with SSL showing wrong site with HTTPS

我有一台运行许多客户端站点的Debian服务器。 其中大多数未运行SSL,因此可以通过HTTP访问。

我有一个拥有SSL证书的客户,也可以通过HTTPS访问他们的站点。

如果尝试使用HTTPS访问其他站点之一,则会出现问题,您将被定向到具有SSL证书的其他站点。

例如,假设我们在服务器上有以下站点:

alpha.net
bravo.net
charlie.net (SSL)
delta.net

如您所见,charlie是唯一使用SSL的协议,无论您访问http charlie.net还是https charlie.net,它都可以正常工作。

到所有其他站点的http都可以,但是如果要转到https alpha.net,它最初会出现无效证书错误,让您继续操作,但是尽管它在地址栏中有alpha.net,但实际上会显示浏览器中的charlie.net网站。

我已经研究了SNI,以及是否还有其他站点具有SSL,我需要将它们全部都放在特定的IP地址上(我不知道该怎么办,我需要尝试其他方法),但是我不确定为什么要这样做正在发生或我如何解决。

之前是否有人遇到过这种情况,您是如何解决的?

非常感谢,

这与SNI没有任何关系,因为您当前只有一台HTTPS服务器。 正如您在评论中所述,发生的事情是alpha.net域解析为服务器的IP。 您的Apache服务器设置为侦听此IP上端口443上的请求,并将charlie.net的内容提供给这些请求。 (证书错误意味着浏览器注意到证书的所谓域名与用于请求的域名之间存在差异。)

从HTTPS重定向到HTTP可能更值得,因为每个域都需要有效的证书,以免向用户显示另一个安全警告。 这将需要在具有SNI功能的服务器(即带有openssl的Apache 2.2+的更高版本)上为alpha.net:443等创建虚拟主机,并添加如下所示的重定向:

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

解决您问题的最简单方法可能是为charlie.net使用其他IP。 使用此设置,alpha.net(等等)将无法显示其他站点的内容。

如果服务器上有多个IP,请对SSL站点使用唯一的IP,所有非SSL站点共享另一个IP。

由于SSL不在乎您要访问的域,因此它仅在乎当前域是否从Ip地址获取的域列表(通用名)中得到批准。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM