是否可以在 IIS6 中拥有一个站点,其中包含多个域(不是子域),其中一些域使用 SSL?使用 SSL 的域使用唯一 IP。
我读过类似的情况,但没有一个与此完全相同。但足够接近,以至于认为它可能会导致问题。
我可能已经看到通配符 SSL 可能会有帮助,因为它们没有映射到 IP 地址?
答案1
不,一个启用 SSL 的站点需要一个 IP 地址。没有办法绕过它。您会看到人们谈论使用通配符证书的“解决方法”,但他们混淆了两件不同的事情。他们混淆了可以使用通配符证书的子域和不能使用通配符证书的其他域。
当 Web 服务器收到使用 SSL 加密的请求时,它需要能够确定服务器上要使用哪个已安装的 SSL 证书。在非基于 SSL 的站点中,HTTP 标头包含站点的请求域。这允许您使用主机标头功能在单个 IP 地址上支持多个非 SSL 网站。这意味着,服务器查看请求,根据 HTTP 请求标头中的主机确定请求的站点,然后将其传递给配置的站点。
如果您拥有基于 SSL 的站点,则进入 Web 服务器的新页面请求已加密。由于 HTTPS 请求的标头也已加密,因此 Web 服务器不能只查看请求的域并使用主机标头功能。它必须使用绑定到特定 IP 地址的 SSL 证书来解码 HTTPS 请求,然后才能处理标头。虽然 Web 服务器可能会尝试使用计算机上安装的所有 SSL 证书来解码请求,以尝试实现基于 SSL 的主机标头功能,但这会大大减慢 HTTPS 处理速度。因此,执行 SSL 的唯一方法是每个安装的证书都有一个 IP 地址。
答案2
对的,这是可能的。
为此,您需要为每个主机名创建一个绑定,例如 www.site1.com www.site2.com 等等……
如果您在绑定中使用主机标头,HTTP 绑定可能会共享相同的 IP 地址。或者,您仍然可以将一个 (1) IP 对应一个 (1) 主机名。
每个 HTTPS 绑定必须使用单独的 IP 地址,但您可以为一个站点分配多个 IP 地址。这是因为 HTTPS 是使用 SSL/TLS 的加密隧道。建立隧道时,它位于 IP 地址之间,因为它无法告诉 Web 服务器它要连接到哪个主机名。标Host
头是 HTTP 的功能,而不是 TLS/SSL。建立隧道后,选择其他绑定就太晚了。
有关绑定信息,另请参阅https://serverfault.com/a/445685/94787
还要注意,虽然 IIS 支持它,但网站仍然需要支持它,但可能不支持。