我和一位同事正在尝试解决 HTTPS 重定向问题,我认为多看几眼总没坏处。我们的问题如下:
- 客户端(192.168.0.1)和主机 1(4.3.2.1)成功协商 SSLv3.0 会话。
- 客户端(192.168.0.1)尝试将 HTTP 数据发送到 Host1(4.3.2.1),并被重定向(307)到 Host2(4.3.2.2)
- Host2(4.3.2.2) 从未收到 HTTP 数据
我们对 SSL 的了解相当不错,但真正精通 SSL 的人已经不在了,所以请耐心等待。以下是我们的问题:
- 由于我们通过 SSL 进行重定向,Host2(4.3.2.2)证书通用名称是否需要与 Client(192.168.0.1)证书上的通用名称匹配?
- 还有哪些问题可能会导致该问题?
答案1
您将重新启动与重定向主机的通信。
如果你这样做:
1)用户A请求https://exampleA.com/redirect
2)https://exampleA.com/redirect307 朝向https://exampleB.com/redirect
3)用户A请求https://exampleB.com/redirect
在 1 中,您需要与 exampleA.com CN 成功进行 SSL 交换,在 3 中,您需要与 exampleB.com CN 成功进行 SSL 交换(如果您转发到 https,如果转发到 HTTP,则不需要它)
另外,请注意 3 不要重定向至 1,否则会造成“大而坏的循环”。
快速提醒:在实际传递虚拟主机数据之前,您需要协商 SSL(除非您使用 SNI,这种情况非常罕见)。因此,如果 A 和 B 位于同一台服务器上,IP 相同,并且都使用 SSL,则可能会出现问题。