基于主机头的SSL证书选择:可以吗?


17

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

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

Answers:


23

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

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

我本人和其他人在ServerFault上已经回答了无数次。除非您有特定问题,否则建议您搜索更多详细信息。


4
我去搜索了,找不到任何东西。如果您知道答案,那么这很可能是很容易搜索的事情之一,因此可以将其包含在搜索词中。谢谢。
DrStalker 2010年

3
如果ServerFault上已有答案,那么可以很好地链接到它们。
Organicveggie 2011年


3
SNI不会在Host标头之后建立SSL连接,但会将主机名包含在SSL握手中。如果您不是SSL开发人员,那并不重要。
Bart van Heukelom'3

搜索Serverfault给出了答案。这就意味着,其他任何问题都可以重复。这链接你包括一直没有结果。
伊恩·博伊德


3

简短答案:

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

编辑:如果您现在希望跨浏览器且完全可移植,则为true 。正如其他人所说,有一些新出现的方法使之在不久的将来成为可能。


1

还是仅在建立SSL连接后才可用的信息?

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


2
那不再是完全准确的。
华纳2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.