One slight change i’d recommend here (and yes my examples don’t do this, I need to fix them). Counterintuitively, you will want to use boost::asio::ssl::context::sslv23 rather than boost::asio::ssl::context::tlsv1 as the argument to the initial context constructor. the tlsv1 constant restricts the implementation to *only* tlsv1. the sslv23 constant specifies SSLv2 and higher (including TLSv1, v1.1, and v1.2). sslv23 along with the no_sslv2 and nosslv3 options set will achieve the generally desired effect of only TLS1.0-1.2.