【问题标题】:C++ SSL VirtualhostingC++ SSL 虚拟主机
【发布时间】:2016-03-19 16:48:41
【问题描述】:

在实现 C++ 服务器时,我遇到了两个域指向同一服务器的问题。 使用 boost 实现标准 SSL 服务器并不是一个真正的问题,但我现在需要以某种方式决定在连接时使用哪个证书。 我知道这是可能的,因为这是 Mass Webhosting 中的常见做法。

例如,单个 Apache/nginx 能够在同一端口 (443) 上使用两个不同的证书提供两个不同的 https 网站。我想在 C++ 中实现类似的行为。

apache 是如何处理这个问题的?

是否可以使用 boost asio 来实现这一点,还是我需要使用一些较低级别的 API (OpenSSL/OS)?

【问题讨论】:

  • 服务器能否根据传入的请求从另一个域中识别出一个域?
  • 语义和http很相似。建立连接后,我会根据传入的请求知道它连接到哪个主机。但是现在决定证书为时已晚。必须有某种方法没有这个,因为它可以在 Apache 中工作。

标签: c++ ssl boost virtualhost


【解决方案1】:

提前告诉服务器需要哪个主机的方法是使用服务器名称指示,如RFC 6066 中所述。它向 TLS 添加了一个扩展字段 server_name,包括一个服务器名称列表,然后服务器可以使用该列表。

这不是必填字段,因此并非所有浏览器或服务器都支持它。但是目前主流产品的支持还是不错的。

【讨论】:

  • 谢谢,这对我很有帮助。但似乎 boost asio 不支持它。看来我必须使用普通的 OpenSSL。
猜你喜欢
  • 2015-03-24
  • 1970-01-01
  • 2010-09-05
  • 2011-01-31
  • 2016-11-05
  • 2016-11-29
  • 2018-04-22
  • 1970-01-01
  • 2015-11-13
相关资源
最近更新 更多