13

我有一个运行多个客户端站点的 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 地址上(我需要尝试解决其他问题,因为我不知道该怎么做)但我不确定为什么会这样正在发生或我如何解决它。

以前有没有其他人遇到过这种情况,您是如何解决的?

非常感谢,

4

2 回答 2

2

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

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

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

对于您的问题,最简单的方法可能是为 charlie.net 使用不同的 IP。使用此设置,alpha.net(等等)将无法显示另一个站点的内容。

于 2013-12-17T15:54:20.930 回答
1

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

由于 SSL 不关心您正在访问的域是什么,它只关心当前域是否从它从 Ip 地址获取的域列表(通用名称)中获得批准。

于 2013-12-05T01:09:06.373 回答