我想知道是否可以将两个 Nginx 虚拟主机放在同一个 v4 IP 地址上。我知道存在 SNI,但我有两个来自不同证书颁发机构的基本(无 SAN、无通配符)SSL 证书,以便在一个 IP 地址上同时生效。
基本上,设置两个 conf 文件(每个虚拟主机一个)是否足够,每个文件指向自己的 KEY 和 CRT?还是有其他问题?
如果可以的话,我会自己尝试解决方案,但 CA 需要为证书付费,而且我宁愿在确信可以正常工作的情况下订购第二份证书。注意:我不会从第一家 CA 购买第二份证书,他们的支持非常糟糕,我想离开他们。
答案1
只要客户端信任这些 CA,来自不同 CA 的证书就不是问题。
无论哪些 CA 签署了证书,在同一 IP 上使用不同的证书为多个站点提供服务在兼容性方面都存在一些限制。
要在一个 IP 上支持多个证书,服务器和客户端都需要支持名为“服务器名称指示 (SNI)”的 TLS 扩展。如果使用现代浏览器,这不是问题,但如果您必须处理旧式客户端软件,则可能会出现问题。
维基百科上关于 SNI 的文章有一个非详尽的不兼容软件列表其中包括 Windows XP 上的 Internet Explorer、Android 2.x 中的默认浏览器、1.7 之前的 Java 等。
答案2
唯一的问题是客户端兼容性,一些非常老旧的浏览器/操作系统组合将无法工作,特别是 Windows XP/IE8。Windows XP 上的其他所有浏览器(Chrome、Opera、Firefox 等)都可以工作。
您无需购买任何东西,只需自己签署其中一个证书(或全部证书)。签署 CA 并不影响服务器端,只影响客户端,如果您将 CA 导入浏览器,浏览器将表现得与付费 CA 签署的证书完全一样。