2017-07-17 6 views
0

私はcpprestsdk(casablanca)でTLSを設定しようとしています。私が読んだすべてのドキュメントでは、これはWindowsでのみサポートされていると言われていますが、SSLの設定に関連するコードを見てみると、周囲には#if !defined _WIN32があります。私の機能は私に隠されているので、証明書を設定することはできません。誰がここで何が起こっているのか知っていますか?WindowsのMicrosoft cpprestsdkのhttp_listenerを持つTLS

答えて

3

Windowsの場合、サーバーが実行しているマシンでサーバーが使用しているポートにSSLサーバー証明書を添付していれば、プロトコルを「http」から「https」に変更する必要があります。この手順に関連する詳細な説明と詳細な手順については、hereを参照してください。

Linuxの場合、web::http::experimental::listener::http_listener_configです。 confオブジェクトを使用して証明書、秘密鍵、チェーンその他のオプションを提供するなどのSSLオプションを設定してから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)); 
+0

こんにちはハシム、私はあなたの記述を複製することはできません。 URLをhttpsに設定しようとしましたが、サーバーに接続できません。私が紛失しているものがありますか? – Michael

+0

@Michael私は答えを更新しました。 –

+0

あなたの応答に感謝します!私はそれが働くことができるかどうか試してみるだろう。すぐに報告します! – Michael

関連する問題