Здравствуйте! Я решил воспользоваться SSL с помощью библиотеки boost::asio, посмотрев пример из документации я попробовал его повторить, на операции socket.handshake у меня вылетала ошибка, даже скопировав код у меня вылетала та же ошибка, однако если поставить sock.set_verify_mode(ssl::verify_none) - то код отрабатывал корректно, почему?
Код:
ssl::context ctx(ssl::context::sslv23);
ctx.set_default_verify_paths();
// Open a socket and connect it to the remote host.
boost::asio::io_context io_context;
ssl_socket sock(io_context, ctx);
tcp::resolver resolver(io_context);
tcp::resolver::query query("ru.wikipedia.org", "https");
boost::asio::connect(sock.lowest_layer(), resolver.resolve(query));
sock.lowest_layer().set_option(tcp::no_delay(true));
// Perform SSL handshake and verify the remote host's
// certificate.
sock.set_verify_mode(ssl::verify_none); // Если прописать sock.set_verify_mode(ssl::verify_peer); - выпадает ошибка
sock.set_verify_callback(ssl::host_name_verification("en.wikipedia.org"));
sock.handshake(ssl_socket::client);
http::request<http::empty_body> request(http::verb::get, "/wiki/HTTP", 11);
request.set(http::field::host, "en.wikipedia.org");
request.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
http::write(sock, request);
flat_buffer buffer;
http::response<http::dynamic_body> response;
http::read(sock, buffer, response);
std::cout << buffers_to_string(response.body().data()) << std::endl;
sock.lowest_layer().shutdown(net::ip::tcp::socket::shutdown_both);
return 0;