我在一个 Apache 安装上使用 ssl 的多个域名。我知道我需要将每个域名放在外部的单独 IP 上。这是否也适用于 NAT 后面的 IP?
意思是,我在一个假设的外部 IP 1.2.3.4 上有一个域名,在 1.2.3.5 上有一个域名(显然,这些都是虚构的 IP)
从内部来看,这两个 IP 都指向 192.168.1.5。是否必须是 1:1 映射,即 1.2.3.4 域指向 192.168.1.5,而 1.2.3.5 IP 必须指向 192.168.1.6?它们都可以指向 192.168.1.5 并且仍然有效吗?
答案1
只要使用不同的端口,您就可以使用相同的内部 IP。Apache 需要知道要使用哪个 SSL 证书/密钥进行连接 - 并且由于请求中的域名是加密的,因此它不能使用它。它唯一需要继续的是 ip:port,因此其中至少一个必须是唯一的。
答案2
我相信答案是肯定的,每个 SSL 证书的 NAT 后面的 IP 地址必须是唯一的。
SSL 是一种传输级加密,它是在客户端发出请求之前设置的。因此服务器事先并不知道客户端要请求哪个网站。
答案3
在https://httpd.apache.org/docs/current/ssl/ssl_faq.html#vhosts您可以阅读以下内容:
请注意,如果您拥有通配符 SSL 证书,或者使用 subjectAltName 字段具有多个主机名的证书,则可以在基于名称的虚拟主机上使用 SSL,而无需进一步的解决方法。
SAN证书不仅可以在一个域上有多个主机,还可以在多个域中有多个主机。
答案4
您可以使用相同的内部 IP,因为在这种情况下您必须查看 TCP 工作流程。您的客户端正在连接到具有 DOMAIN0 名称的外部 IP0。SSL 密钥用于 DOMAIN0。此 TCP 会话将转到 IP0,即使重定向到内部 IP,客户端也会看到外部 IP 并会很高兴。