Использование специального шифра для SSL / TLS в boost :: asio - PullRequest
0 голосов
/ 27 апреля 2018

Я реализую взаимную аутентификацию, когда сервер использует 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"); неверна. Так как я могу сделать эту работу?

1 Ответ

0 голосов
/ 04 мая 2018

После просмотра комментария от @ottomeister я понял, что работаю над контекстом SSL, когда использую соединение SSL. Поэтому я использовал SSL_CTX_set_cipher_list вместо SSL_set_cipher_list, и это сработало.

...