将https重定向到另一个https


28

我一直在搜寻这个问题,具有讽刺意味的是,我找不到具体的答案。我过去曾经亲自回答过这个问题,现在我不记得自己的解释了。

一年几次,有人会要求我这样做。我想向他们指出一些受人尊敬的文章来解释这一点。

我想在https://www.example.com/上获取URL,并将流量重定向到https://www.example2.com/

我认为这在技术上应该可行,但这是不希望的。这种方法有什么问题?我将浏览器重定向到另一个站点后,浏览器会弹出安全提示框吗?任何人都可以提供指向一些可解释此问题的重要文档的链接吗?


4
您的情况可能令人讨厌,但这并不具有讽刺意味;)
Gareth 2010年

Answers:


17

您可以这样做,两个站点都必须具有有效的SSL证书。这样,浏览器将不会显示安全弹出窗口。但是,如果两个站点都位于同一台服务器上,则两个域都需要从不同的IP地址托管。

Web服务器查看HTTP请求中的“主机”标头,以查看它需要服务的站点。SSL协商在发送HTTP请求之前进行,因此此时Web服务器无法确定它将显示哪个网站。它将始终将相同的证书发送到浏览器。

有两种方法可以解决此问题:

  • 对于* .example.com具有通配符证书,因此所有子域都可以共享同一证书。
  • 在不同的IP地址上运行每个SSL站点。这样,Web服务器通过检查接收到传入连接的IP地址来知道它可以发送给浏览器的SSL证书。

请注意,完全有可能将多个IP地址附加到同一网络适配器,只是您需要在IP地址空间中使用第二个IP地址。

更新:如今,您可以在单个IP上运行多个SSL站点。要启用此功能,请在Web服务器上配置SNI支持。大多数现代浏览器(Windows XP和Android 2除外)都支持此功能。


1
您还可以根据统一通信证书(UCC)在同一IP上托管多个SSL站点,请参阅help.godaddy.com/article/3908
ManiacZX 2010年

解决多主机名/一个IP证书问题的另一种方法是使用备用端口号。这是不理想的,因为某些防火墙/公共访问点会阻止非80/443通信。
布莱恩·艾吉

5

我从未尝试过这样做,因此我不会从具体经验中进行发言,但是应该可以。您需要为https://www.example.com拥有一个有效的SSL证书,因为主机名已在HTTP标头中加密,因此您的服务器在解密之前不会知道重定向。之后,它应该像正常的HTTP请求一样重定向。


2

为什么这是不希望的?

例如,Big Bank和Little Bank都在https上运行站点,以给客户带来快乐安全的感觉。大银行收购小银行。在某些时候,IT人员将为https://www.littlebank.com设置https://www.bigbank.com的重定向。这是从https重定向到https的合理原因。

这应该工作正常。


您描述的情况很好,但是,如果您将www.littlebank.com重定向到www.bigbank.com,同时掩盖了实际地址,以使浏览器仍然显示www.littlebank.com,那不是很好事情。这在不相关的非安全站点上很常见,但是您肯定会看到将自己显示为安全网站所固有的危险,而实际上却并非如此。
查尔斯(Charles)2010年

1

我认为当前的响应中可能存在的一种断开连接可能是,在上述任何一种情况下,都可以进行真正的重定向(例如:浏览器重新指向www.example2.com),但是如果您屏蔽了此功能使得浏览器stillthinks它在www.example.com尖时,在现实中,你已经把它交给www.example2.com,是在那里你会看到安全警告,正是因为你可能试图欺骗用户。

简短的版本是正常的重定向应该没问题,地址屏蔽可能会让您有很多解释要做。


谢谢查尔斯。那一定是我所想到的“不希望的”情况。
Stefan Lasiewski 2010年

0

可以看出,这个问题可以在传输层上解决。假设您有一个example.com的DNS A记录,指向192.168.0.1。当您在浏览器中输入https://example.com时,您的PC与IP 192.168.0.1的服务器建立了TCP连接,其中某些进程在端口443上进行侦听。如果同时服务器(不尝试这样做)了解通过此TCP会话发送的数据的详细信息(例如开始SSL协商),建立到192.168.0.2的TCP连接(另一台服务器使用DNS A example2.com指向它)。在第一台服务器上安装的HA代理Linux实用程序可以通过像这样的配置:

defaults
        log    global
        mode    tcp
        retries 2
        option redispatch
        option tcplog
        option tcpka
        option clitcpka
        option srvtcpka
        timeout connect 5s      
        timeout client  24h     #timeout client->haproxy(frontend)
        timeout server  60m

listen front443 192.168.0.1:443
    server back443 192.168.0.2:443

但是,这将导致SSL证书错误,除非您的example2.com Web服务器将显示带有CN = example2.com和SAN = example.com的SSL证书。

或者,当来自用户的example.com和example2.com解析为192.168.0.1时,您可能会设置DNS slpit范围。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.