Web 服务器是否可以根据传入连接的主机标头选择要使用的 SSL 证书,还是只有在建立 SSL 连接后才可用的信息?
也就是说,我的网络服务器是否可以在端口 443 上列出并在请求 https://foo.com 时使用 foo.com 证书,如果请求https://bar.com或我正在尝试使用 bar.com 证书不可能的事情,因为服务器必须在知道客户端想要什么之前建立 SSL 连接?
Web 服务器是否可以根据传入连接的主机标头选择要使用的 SSL 证书,还是只有在建立 SSL 连接后才可用的信息?
也就是说,我的网络服务器是否可以在端口 443 上列出并在请求 https://foo.com 时使用 foo.com 证书,如果请求https://bar.com或我正在尝试使用 bar.com 证书不可能的事情,因为服务器必须在知道客户端想要什么之前建立 SSL 连接?
从历史上看,您的第一个陈述是准确的。现在,有多种选择:
我和其他人已经在 ServerFault 上多次回答了这个问题。除非您有特定问题,否则我建议您搜索更多详细信息。
为了扩展华纳的回答:CAcert 的页面Vhost Task Force比较了在单个服务器上使用多个域的几种方法。我个人使用Server Name Indication。
简短的回答:没有
HTTP 封装在 SSL中,因此在建立连接之前,无法访问有关请求的任何信息。因此,直到向客户提供证书。无法使用标头或任何其他加密信息,因为它们仍然不可用。
编辑:如果你现在想成为跨浏览器并且完全可移植,这是真的。正如其他人所说,有一些新出现的方法使其在不久的将来成为可能。
正确的。在发送 HTTP 请求的任何部分(包括主机标头)之前建立 SSL 连接。