在同一 IP 上使用 SSL 的多个域

nit*_*ins 25 ssl certificate https apache-2.2

我知道设置 SSL 需要专用 IP。如果我们为共享 IP 的域添加 SSL 会发生什么?(名称虚拟主机)

peh*_*hrs 29

我认为如何解释虚拟主机和 SSL/TLS 的真正问题是一个好主意。

当您通过 HTTP 连接到 apache 服务器时,您会同时发送一组 http 标头。它们看起来像这样:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com
Run Code Online (Sandbox Code Playgroud)

如果您有虚拟主机,apache 会查看 hosts 字段,然后为您获取正确的 index.html。问题是当您添加 SSL/TLS 时。服务器在您发送 http 请求之前设置加密。因此,服务器不知道您是要访问 www.nice-puppies.com 还是 www.evil-haxxor.com,直到身份验证/加密完成之后。服务器无法猜测(因为发送错误的证书会给您带来令人讨厌的错误消息)。

一种解决方案是通配符证书(如上所述),它对 *.nice-puppies.com 有效。这样你就可以对多个域使用相同的证书,但你不能拥有 *.com 证书(好吧,你可以,但对其他人来说会很糟糕),所以通常你需要为每个域使用单独的 IP HTTPS 域。

  • 还有SNI。你的陈述不再是确定的,pehrs。您的解释在历史上是准确的,但不再反映当前的技术。 (6认同)
  • 很好的解释,但您可以拥有一个 UC 证书,该证书将允许一个证书中的多个域 (4认同)
  • SNI 不(还?)在 Windows XP 上与 IE6 一起使用。考虑到市场份额,哪种限制了价值。我相信原始用户对会发生什么更感兴趣,而不是为了绕过它而存在的一组黑客。 (4认同)

小智 9

这个问题的真正解决方案是“服务器名称指示”:

http://en.wikipedia.org/wiki/Server_Name_Indication

它才刚刚开始在服务器和 Web 客户端中推出,因此您现在还不能真正使用它,但希望几年后这不会成为大问题。