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

所以我在一个奇怪的情况下,我正在使用一个特定的服务器托pipe的东西,我不能在其他任何地方(它有权访问用户数据库等无法访问)。 我已经和系统pipe理员进行了很多讨论,看起来像运行我们网站的唯一方法:通过https的www.foo.com可能通过某种代理。

目前,用户访问www.foo.com并redirect到https:// host-server.com/foo,因为在那里安装了SSL证书。 我希望用户使用https:// www.foo.com。

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

所以我想知道是否有可能让DNSlogging指向一个新的服务器,然后创build与浏览器的HTTPS连接。 然后它将请求转发到https:// host-server.com/foo,并将回复送回原始请求者。

这有道理吗? 而且会是可行的吗? 我的SSL经验是有限的,所以在此先感谢您的帮助:)

由于ServerFault对于我发布的链接数量感到不满,因此在超链接中存在着空白。

无论协议(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 Server的原样,可以考虑将HTTPS放在一个单独的主机名(如https://secure.foo.com/)上 。 在你的例子中,它可以是一个像https://host-server.com/foo这样的SSL代理。

要做到这一点,你需要一个可以通过公共IP和TCP端口443访问的主机。在这台机器上运行一个Web服务器来回答所有的HTTPS请求。 它会将所有请求转发到现有的HTTP服务器,并通过encryption的通道将答案返回给客户端。 你可以使用任何普通的networking服务器,比如apache,nginx或者lighttpd,或者像pound这样更专业的解决scheme。 你应该find很多例子来说明如何做到这一点。 请记住,HTTPS代理和HTTP Web服务器之间的所有stream量在默认情况下都是未encryption的。

同样,在同一台机器上执行HTTP和HTTPS没有任何问题。 它只是取决于现有的安装和要求。 主要是公共IP和端口的使用以及与客户端的SNI证书的兼容性。

最简洁的答案是不。

你不能这样做。 你需要做的是为服务器获取一个额外的IP地址,或者把站点放在另一个不是443的端口上。

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

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