SSL を asio ライブラリで動作させるのに問題があります。
これは、サーバー部分をセットアップする方法です。
serverServicePtr->network_context->set_options(boost::asio::ssl::context::default_workarounds| boost::asio::ssl::context::no_sslv2 );
serverServicePtr->network_context->set_password_callback(boost::bind(&ServerService::GetPassword));
serverServicePtr->network_context->use_private_key_file("privkey.pem", boost::asio::ssl::context::pem);
...
clientSocket->handshake( boost::asio::ssl::stream_base::server );
クライアント部分:
boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
ctx.load_verify_file("pubkey.pem");
ctx.set_verify_mode(boost::asio::ssl::verify_peer);
ctx.set_verify_callback(boost::bind(&verify_certificate, _1, _2));
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> s(io_service, ctx);
boost::asio::connect(s.lowest_layer(), iterator);
s.lowest_layer().set_option(boost::asio::ip::tcp::no_delay(true));
s.handshake(boost::asio::ssl::stream_base::client);
ハンドシェイクで失敗します。サーバーは「ハンドシェイク:共有暗号なし」と言い、クライアントはただ言います。そのサーバーはクライアントを拒否します。
私の質問は、どこに問題がありますか? 私は何が欠けていますか?おそらく、キーを間違って生成しましたか? asioに適したものを生成する方法は?