根据主机头选择 SSL 证书:可能吗?

根据主机头选择 SSL 证书:可能吗?

Web 服务器是否可以根据传入连接的主机头选择要使用的 SSL 证书,或者该信息是否仅在建立 SSL 连接后才可用?

也就是说,我的网络服务器是否可以在端口 443 上列出并使用 foo.com 证书,如果https://foo.com被请求,并且 bar.com 证书如果https://bar.com被请求还是我试图做一些不可能的事情,因为服务器必须在知道客户端想要什么之前建立 SSL 连接?

答案1

从历史上看,您的第一句话是正确的。现在,有多个选项:

  • 如果子域名位于同一域内,则使用通配符证书。
  • SAN/UCC 证书用于指定证书的备用名称,从而能够提供多个证书。
  • 引入 SNI 是为了在 Host 标头之后建立 SSL 连接。但由于它较新,因此支持有限。

我和其他人已经在 ServerFault 上多次回答过这个问题。除非您有具体问题,否则我建议您搜索更多详细信息。

答案2

扩展华纳的回答:CAcert 的页面Vhost 任务组比较了在单个服务器上使用多个域名的几种方法。我个人使用服务器名称指示

答案3

简短回答:

HTTP 被封装SSL 内部,因此在建立连接之前,有关请求的任何信息都无法访问。因此,直到证书已提供给客户端。无法使用标头或任何其他加密信息,因为它们仍然不可用。

编辑:如果你想的话这是真的如今跨浏览器并完全可移植。正如其他人所说,在不久的将来,一些新兴方法将使之成为可能。

答案4

或者该信息仅在建立 SSL 连接后才可用?

正确。在发送 HTTP 请求的任何部分(包括主机头)之前,就会建立 SSL 连接。

相关内容