具有 apache ip 要求的 ssl 虚拟主机

具有 apache ip 要求的 ssl 虚拟主机

我在一个 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 并会很高兴。

相关内容