Cómo solucionar boost::beast handshake: no protocols available (SSL routines)

Problema:

Al ejecutar tu aplicación boost::beast, ves la siguiente excepción:

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]

Solución

Te estás conectando usando una versión de SSL o TLS que el servidor no soporta.

La versión de TLS/SSL se selecciona al inicializar el boost::asio::ssl::context:

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

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

En este caso, estamos usando el protocolo obsoleto TLSv1.1.

Cambia la línea a

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

para usar TLSv1.3 en su lugar. Ten en cuenta que algunas versiones más antiguas de TLS/SSL se consideran inseguras.


Echa un vistazo a artículos similares por categoría: Boost C/C++