经过一些互联网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并将一个静态文件放在您的旧域中。 你还在收到证书问题吗?
尝试SSLLabs上的两个域,并确保没有重大问题。
这两个域都应该有自己的证书。 在非常旧的浏览器上,如果没有SNI(服务器名称指示),您将需要两个IP用于此设置。