为什么我不能将https://域名redirect到另一个https://域名,而没有安全exception?

经过一些互联网search之后,我确定在SSL连接之前发送的HTTP请求指示浏览器注册该域的IP地址。 因此,任何强制redirect将随后使用原始证书。

^我的上述理解是否正确? 有人可以告诉我在HTTP请求中发生这种情况吗?

我有一个Apache2服务器,并强制从旧的https域redirect到一个新的https域。 无论我尝试什么设置,都会造成问题。

如果我在redirect上使用旧证书:这导致在新域中使用旧证书。

如果我在redirect上使用新的证书:这导致在旧的域上使用新的证书。

两者都导致SSL安全exception。

我正在使用没有SANfunction的标准通配符证书。

现在,我不得不build立一个新的服务器来做到这一点,而不会收到来自浏览器的安全exception。

…我已经确定在SSL连接之前发送的HTTP请求指示浏览器注册该域的IP地址。

这是错误的。 HTTP请求不确定URL /主机名和IP地址之间的任何关系。 这是由DNS完成的。 但是,如果redirect完成相同的主机名,那么通常会使用相同的IP地址。 但是,如果多个IP地址与DNS中的相同主机名相关联,则可能是不同的IP地址。

因此,任何强制redirect将随后使用原始证书。

如果您从HTTPredirect到HTTPS,则不存在原始证书,因为HTTP没有证书,只有HTTPS。 如果您从主机A上的HTTPSredirect到主机B上的HTTPS,则第一次访问(到主机A)必须导致主机A的证书,第二个请求(到主机B)必须导致主机B的证书。

我有一个Apache2服务器,并强制从旧的https域redirect到一个新的https域。 无论我尝试什么设置,都会造成问题。

在这种情况下,您将从一个主机名redirect到另一个主机名。 目标IP地址可能不同,但如果两个名称都托pipe在同一个系统上,则可能也是如此。 但是这其实并不重要。

所有重要的是, URL中的主机名必须与证书的主题相匹配 。 redirect改变了URL,因此可能会改变URL的主机名。 不pipe是否涉及不同的IP,无关紧要:如果URL中的主机名与证书的主题不匹配,则validation将失败。

因此,您需要的是:

  • 有一个证书,其中包括两个主机名,即您从中redirect的主机和您也redirect的主机。 这两个主机名使用此证书。
  • 或者为每个主机名拥有不同的证书并进行设置,以便证书与服务器的主机名匹配。 如果两个主机名都在相同的IP地址上提供,则客户端需要支持所有当前浏览器执行的SNI ,而不是所有的机器人或其他工具/库。

redirect不应该是这里的问题。 尝试禁用redirect并将一个静态文件放在您的旧域中。 你还在收到证书问题吗?

尝试SSLLabs上的两个域,并确保没有重大问题。

这两个域都应该有自己的证书。 在非常旧的浏览器上,如果没有SNI(服务器名称指示),您将需要两个IP用于此设置。