我有一个面向互联网的 Apache HTTPS 服务器 current.example.com。我想将该 Web 服务器重命名为 nextname.example.com。我还需要 current.example.com 在转换期间继续工作。这只是名称更改,并且将提供来自相同位置的相同内容。
我首先将 ServerAlias 添加到我的虚拟主机配置(HTTP 和 HTTPS)。这导致在访问 nextname.example.com 时出现“您的连接不是私密的”消息。我预料到了这种情况。
我知道一个(也许是唯一的?)解决方案是为 nextname 创建一个新证书,并创建一个新的 VirtualHost 配置。
但我希望有另一种解决方案。
此外,我意识到新的私钥不是强制性的,但可能建议这样做,因为我们已经需要一个新的证书。
有没有办法配置,以便两个虚拟服务器都可以使用/共享证书,或者是否需要新证书才能保留旧名称?
证书必须与所访问的 URL 匹配。这才是它所认证的。因此,如果您希望服务器可以通过 HTTPS 使用其新名称进行访问,则必须同时获取匹配的证书。同样,要使旧域名正常工作,也需要旧名称的证书。
虽然您是否获得同时对两个域名有效的新证书,或者您是否拥有两个单独的证书并继续使用当前证书来管理旧名称,这都无关紧要。就客户而言,无论哪种方式,这都是两个独立的站点。
获取新证书不会使旧证书失效(当然,如果证书名称不同,则不会),但一个 VirtualHost 只能提供一个证书。因此,如果您为两个名称获取了单独的证书,则不能使用 ServerAlias – 您需要两个
VirtualHost
具有相同配置的单独块,尽管这不是什么大问题:将配置或Include
通用文件复制并粘贴到两者中,甚至定义一个<Macro>
.有三个选项:
保留旧域的旧证书,并为新域获取新证书。这将需要两个
VirtualHost
s,每个域+证书一个。您不使用,但每个 s 都ServerAlias
不同。ServerName
VirtualHost
获取包含旧域名和新域名的证书(作为“主题备用名称”,又称 SAN)。然后,您可以保留单个
VirtualHost
,将域分别定义为ServerName
和ServerAlias
,并使用单个证书。同样的事情,但不是明确列出两个域名,而是如果它们都属于同一个高级域名 (
example.com
),则获取通配符证书 (*.example.com
)。获取通配符域名的过程通常稍微复杂一些,因为它涉及 DNS 而不仅仅是 Web 服务器。在选择一个选项时,你可能应该考虑: