在无法添加额外证书的服务器上通过 https 运行网站的最佳方式

在无法添加额外证书的服务器上通过 https 运行网站的最佳方式

所以我处于一个奇怪的情况,因为我使用一个特定的服务器来托管东西,而这些东西无法托管在其他地方(它可以访问用户数据库等,否则无法访问)。我和系统管理员进行了很多讨论,看起来运行我们网站的唯一方法:www.foo.com 通过 https 可能是通过某种代理。

目前,用户访问 www.foo.com 后会被重定向到 https:// host-server.com/foo,因为该服务器上安装了 SSL 证书。我希望用户访问 https:// www.foo.com。

有人告诉我,由于各种原因,向主机服务器添加额外的 SSL 证书将会非常困难。

所以我想知道是否有可能让 DNS 记录指向一个新服务器,然后该服务器与浏览器建立 HTTPS 连接。然后它将请求转发到 https:// host-server.com/foo 并将回复反馈给原始请求者。

这有意义吗?这可行吗?我对 SSL 的经验非常有限,所以提前感谢您的帮助 :)

ps:超链接中存在间隙,因为 ServerFault 对我发布的链接数量感到不满意!

答案1

无论使用哪种协议(HTTP、HTTPS 等),主机名 www.foo.com 总是会产生相同的 IP 地址。它可以提供 HTTP(默认端口 80)和 HTTPS(默认端口 443)。因此,如果无法使用端口 443(无论出于何种原因),您必须将 HTTP 和 HTTPS 都转移到不同的 IP 地址。

非默认端口

正如“Frands Hansen”已经提到的,您可以使用非默认端口进行 HTTPS。但您必须在所有 URL 中包含此端口(例如https://www.foo.com:1234/)。这可能不合适。

HTTPS 反向代理

如果您想要或必须保留 HTTP 服务器,您可以考虑将 HTTPS 放在单独的主机名上,例如https://secure.foo.com/. 可以是 SSL 代理,例如https://host-server.com/foo在你的例子中。

为此,您需要一个可以通过公共 IP 和 TCP 端口 443 访问的主机。在此机器上,您将运行一个响应所有 HTTPS 请求的 Web 服务器。它将所有请求转发到现有的 HTTP 服务器,并通过加密通道将答案返回给客户端。您可以使用任何常见的 Web 服务器来实现这一点,例如 apache、nginx 或 lighttpd,或者更专业的解决方案,例如。您应该会找到很多有关如何执行此操作的示例。请记住,默认情况下,HTTPS 代理和 HTTP Web 服务器之间的所有流量均未加密。

再次强调,在同一台机器上执行 HTTP 和 HTTPS 并没有错。这仅仅取决于现有的安装和要求。主要是要使用的公共 IP 和端口以及兼容性SNI 证书在客户端。

答案2

最简洁的答案是不。

您不能这样做。您需要做的是为服务器获取额外的 IP 地址,或者将网站放在 443 以外的其他端口上。

最后一种可能性是使用 SNI - 但我建议您不要这样做,因为 Windows XP 不支持它 - 而且由于某种原因,很多人仍然使用 XP。

唯一正确的解决方案是为服务器获取另一个 IP 地址。这将使之成为可能。这样做的原因是 SSL 绑定在端口上,并且在任何数据交换之前协商加密 - 主机头是数据交换的一部分。

相关内容