最近,我联系了我的共享主机提供商,希望他们能为我的几个网站设置私有 SSL。我有多个网站托管在同一套餐下(套餐允许无限域名)。但是,他们告诉我,由于这是共享主机,最终每个网站都从同一个 IP 地址运行,因此我只能安装一个证书,并且只能保护我的 1 个网站(因为每个证书都需要一个专用 IP)。
他们给我的另一个选择是使用共享证书;这是不可接受的,因为浏览器会生成证书警告。我的问题是:这是共享托管提供商的典型做法吗?还是我可以找到一个允许我使用多个私有证书的提供商?我目前正在开发几个网站,希望将成本保持在最低水平,这就是我尚未升级到 VPS 或专用托管的原因。谢谢。
答案1
您的共享主机提供商向您提供的信息确实是准确的。
基于 SSL 的流量必须绑定到单个 IP 地址,以便建立初始 SSL 握手和加密连接。这一切都是在向 Web 服务器提供请求的 URI 之前完成的。因此,您只能将一个证书绑定到每个 IP 地址。而您可以将无限数量的域绑定到单个 IP 地址,从而阻止 SSL 证书安装。
许多共享提供商会允许您在某些共享托管计划中支付额外的 IP 地址,以便使用 SSL 证书。您可能会发现您的提供商确实提供此功能,但它可能仅在其他计划中可用,因为这将被视为更高级的服务,因此可能无法在更简单的托管计划中使用。
答案2
编辑:这个问题是 2009 年提出的,当时的答案(如下)是正确的。如果人们现在遇到这些信息,它或多或少就无关紧要了:
问题在于SSL以及你所说的限制关于 SSL过去和现在都是正确的。然而,所有人正在使用TLS现在和服务器名称指示(SNI)广泛可用,正好解决了这个问题。当然,你仍然可以继续使用通配符证书,但每个 TLS 主机的单独证书可能的也一样。
这对 2009 年原始问题的情况没有帮助,但确实更新了答案,使其在 2015 年编辑时更加相关
2009 年的原始答案:
关于每个 IP 1 个 https 端点的信息是正确的。协议规定加密在客户端和服务器协商 URL 之前开始,VirtualHosts 启用 SSL 需要此操作。密钥/证书将取决于 URL(即主机名),用于在一个 IP 上设置多个证书,但它是在服务器知道要联系哪个 URL 之前使用的。
我知道该协议正在制定中,但目前还没有解决这个问题的办法 —— 至少目前还没有普遍可用的解决办法。
更新:如果您自己只有 1 个 IP,则可以使用通配符证书。基本上,它们认证的身份不是针对 www.example.com,而是针对 *.example.com,这样您就可以让多个主机共享同一个 IP,而无需在浏览器中生成任何警告。
答案3
只有两种方法可以保护使用相同 IP 的多个域。要么为每个证书使用不同的服务端口(这个选项很糟糕),要么找到允许在证书中使用 SubjectAltName 的 CA。
使用 SubjectAltName,您可以根据需要为每个证书定义任意数量的 DNS 条目。这意味着一个证书将验证多个域。这超出了通配符的范围,因为域不必有任何共同点。作为此示例,您可以查看证书颁发机构这使得这一点成为可能。
答案4
如果您可以找到一个可以为您提供多个 IP 的共享主机,您就可以获得多个证书,但您实际上不能(据我所知)在同一个 IP 地址上拥有多个证书,除非它是共享的。
如果您想要更具成本效益的东西(并且您不介意自己做一些配置工作),您可以看看 rackspace 云(以前称为 Mosso,类似于 EC2,只是便宜一点……理论上您可以每月花费大约 15 美元来运行一个开发服务器): http://www.rackspacecloud.com
[更新] 尚未获得足够的声誉来发表评论,但正如下文所述,从技术上讲,您可以获得通配符证书,该证书对域的所有子域均有效(*.example.com,包括 www.example.com)。但是,这不适用于多个域,您仍然需要多个 IP 地址,原因已由 Olaf 解释。