Mic*_*ael 2 c++ windows rest ssl casablanca
我正在尝试使用 cpprestsdk (casablanca) 配置 TLS。我读过的所有文档都说这仅在 Windows 上受支持,但是当我查看与配置 SSL 相关的任何代码时,我看到了#if !defined _WIN32它的周围。我无法配置任何证书,因为这些功能对我隐藏。有谁知道这里发生了什么?
对于 Windows,您只需将 url 中的协议从“http”更改为“https”,前提是您已将 SSL 服务器证书附加到服务器正在运行的计算机上使用的端口。有关此过程中涉及的非常好的描述和详细步骤,请参见此处。
对于 Linux,有web::http::experimental::listener::http_listener_config. 您可以设置 SSL 选项,例如提供证书、私钥、链以及使用conf对象的其他选项,然后将其提供给http_listener对象。
web::http::experimental::listener::http_listener_config conf;
conf.set_ssl_context_callback([](boost::asio::ssl::context &ctx)
{
ctx.set_options(boost::asio::ssl::context::default_workarounds);
// Password callback needs to be set before setting cert and key.
ctx.set_password_callback([](std::size_t max_length, boost::asio::ssl::context::password_purpose purpose)
{
return "password";
});
ctx.use_certificate_file("cert.pem", boost::asio::ssl::context::pem);
ctx.use_private_key_file("key.pem", boost::asio::ssl::context::pem);
ctx.use_certificate_chain_file("chain.pem");
});
auto listener = std::unique_ptr<http_listener>(new http_listener(url, conf));
Run Code Online (Sandbox Code Playgroud)