经过一些研究,我还没有找到我的问题的明确答案。
我目前在具有两个 IP 地址的 VPS 上托管客户:
XXX.XX.XXX.XX1
XXX.XX.XXX.XX2
当我购买这个 VPS 时,据说第二个 IP 可以供我托管我的 SSL 证书。
我想知道,既然所有域名都指向同一个 IP,我是否只需要一个涵盖该 IP 的 SSL 证书?还是我需要涵盖每个唯一域名的单独 SSL 证书?
答案1
SSL 证书验证的是域名或主机名,而不是 IP 地址。但是,现在大多数 Web 服务器和浏览器都支持服务器名称指示 (SNI) 和主题备用名称 (SAN),这意味着您不需要第二个 IP 地址。因此,您不再需要购买证书。LetsEncrypt Certbot免费为多个域名提供域名验证证书。
答案2
如果您的服务器不支持 SNI,或者您担心浏览器不支持,那么您将需要每个域一个证书,并且每个域都需要一个 IP 地址。
在 SNI 出现之前,当客户端建立 https 连接时,服务器必须接受并解密它,然后才能知道客户端想要连接到哪个 http 主机。在这种情况下,如果服务器在同一个 IP 地址上为多个 http 主机提供服务,则服务器将始终假定客户端想要连接到配置中第一个排序的主机。如果响应中提供的证书与客户端请求的主机不匹配,则浏览器将生成错误。因此,您必须在不同的 IP 地址上运行不同的域。
启用 SNI 后,服务器会向客户端请求提供所有可用的证书,并且客户端可以将其主机请求与正确的证书(如果存在)进行匹配,这意味着只有在所有证书均不匹配时才会生成浏览器错误。
这样您就可以在同一个 IP 地址上托管多个 https 主机。但是,您仍然需要每个域一个 https 证书(免费或商业)。
答案3
SSL 证书是针对每个域名而不是每个 IP 的。
您可以拥有 1000 个 IP,但是当您拥有域名 myextradomain.com 的证书时,您就可以使用 SSL 证书在 1000 个 IP 上托管此网站:)。
例如,如果您有多个子域名:
- subdomain.myextradomain.com
- subdomain2.myextradomain.com
- subdomain3.myextradomain.com
您可以购买通配符证书,然后可以在所有子域名上使用该证书。