Я реализую взаимную аутентификацию, когда сервер использует nodejs, а клиент использует boost::asio
. Я пытался обойти, поставив определенный шифр и конкретную версию TLS. Я могу заставить его использовать конкретную версию tls, но как я могу заставить boost :: asio работать с конкретными шифрами. Вот мой код реализации:
context_ptr ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(websocketpp::lib::asio::ssl::context::tlsv12_client);
try {
ctx->set_options(boost::asio::ssl::context::default_workarounds |
boost::asio::ssl::context::no_sslv2 |
boost::asio::ssl::context::single_dh_use);
ctx->set_verify_mode(boost::asio::ssl::context::verify_peer |
boost::asio::ssl::context::verify_fail_if_no_peer_cert);
ctx->load_verify_file("ca_server.pem");
} catch (std::exception& e) {
std::cout << "Exception " << e.what() << std::endl;
}
SSL_set_cipher_list(ctx->native_handle(), "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384");
ctx->use_certificate_file("client.pem",
boost::asio::ssl::context::file_format::pem);
ctx->use_private_key_file("client.key",
boost::asio::ssl::context::file_format::pem);
Как видите, я хочу использовать TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
шифр в качестве аутентификации. Может кто-нибудь сказать мне, что я должен сделать, чтобы заставить его использовать определенный шифр?
Примечание: моя реализация SSL_set_cipher_list(ctx->native_handle(), "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384");
неверна. Так как я могу сделать эту работу?