配置asio上下文以使用tls

时间:2015-06-16 17:01:38

标签: c++ boost websocket openssl protocols

你能告诉我(或显示更好的代码)如何配置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身份验证。如何在websockets中设置所需的参数?

ps:对不起虚假问题

1 个答案:

答案 0 :(得分:0)

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

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 example