Как исправить boost::beast handshake: no protocols available (SSL routines)

Проблема:

Во время работы вашего приложения boost::beast вы видите следующее исключение:

handshake_error_output.txt
terminate called after throwing an instance of 'boost::wrapexcept<boost::system::system_error>'
  what():  handshake: no protocols available (SSL routines) [asio.ssl:167772351]

Решение

Вы подключаетесь, используя версию SSL или TLS, которую сервер не поддерживает.

Версия TLS/SSL выбирается при инициализации boost::asio::ssl::context:

ssl_context_example.cpp
namespace ssl = boost::asio::ssl;

ssl::context ctx(ssl::context::tlsv11_client);

В этом случае мы используем устаревший протокол TLSv1.1.

Измените строку на

ssl_context_tlsv13.cpp
ssl::context ctx(ssl::context::tlsv13_client);

чтобы использовать TLSv1.3 вместо него. Имейте в виду, что некоторые старые версии TLS/SSL считаются небезопасными.


Check out similar posts by category: Boost C/C++