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

标签 apache ssl https sni

我有一台 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(等等)将无法显示另一个站点的内容。

关于apache - 每个带有 SSL 的 Apache 服务器的多个站点显示带有 HTTPS 的错误站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19070296/

相关文章:

php - wordpress http 到 https 重定向不起作用

php - 什么时候我的安全传输尝试变得多余?

PHP代码没有被执行,但代码显示在浏览器源代码中

linux - WordPress 无法保存永久链接显示 404 错误

Apache 虚拟主机始终托管较早的内联

security - TLS 会阻止其他人对我的协议(protocol)进行逆向工程吗?

php - XAMPP 启动时出现这个错误是什么?我怎样才能解决这个问题?

WCF 自签名证书在客户端上不受信任

macos - MacOS上的Chrome发出“ERR_CERT_WEAK_SIGNATURE_ALGORITHM”警告

css - 从 http 切换到 https 会导致 CSS 问题