配置 asio 上下文以使用 tls



你能告诉我(或显示代码哪个更好)如何配置boost::asio::ssl::context以与TLS正常工作吗?我使用 websocket-server (websocket++),它使用 boost::asio 进行配置。我应该设置哪些选项才能使其正常工作?我知道我应该设置

context_ptr ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
ctx->set_options(boost::asio::ssl::context::default_workarounds);

使用 sslv23 及更高版本(包括我的 TLS)。我想以某种方式设置服务器我保存在内存中的 RSA 密钥。Websockets还必须以某种方式设置它以传递此TLS身份验证。如何在 websocket 中设置这个需要的参数?

PS:对不起,假问题

WebSocket++ 使用基于策略的方法在终结点上启用 TLS 支持。 Boost.Asio TLS 支持的配置策略位于websocketpp/config/asio.hpp头文件中。 包含它后,使用 websocketpp::config::asio_tls 策略实例化服务器将允许通过提供给 set_tls_init_handler() 的回调提供boost::asio::ssl::context

websocketpp::lib::shared_ptr<boost::asio::ssl::context> on_tls_init(
    websocketpp::connection_hdl
)
{
  auto ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(
      boost::asio::ssl::context::sslv23);
  // ... configure ctx as desired
  return ctx;
}
int main()
{
  using websocketpp::lib::placeholders::_1;
  using websocketpp::lib::bind;
  // Create server with Asio TLS configuration.
  websocketpp::server<websocketpp::config::asio_tls> server;
  server.init_asio();
  // Set the handler which will return the `ssl::context`.
  server.set_tls_init_handler(bind(&on_tls_init, _1));
  // set other handlers, listen, accept, run, etc...
}

有关 WebSocket++ TLS 支持的完整示例,请参阅官方echo_server_tls示例。

相关内容

  • 没有找到相关文章

最新更新