我正在实现一个相互身份验证,其中服务器在客户端使用boost::asio
时使用nodejs。我试图通过使用特定的密码和特定的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");
的实施是错误的。那么我怎样才能做到这一点呢?
答案 0 :(得分:0)
在看到@ottomeister的评论后,我意识到我在使用SSL连接时正在处理SSL上下文。我使用了SSL_CTX_set_cipher_list
而不是SSL_set_cipher_list
,而且效果很好。