Boost SSL verifica los certificados caducados y autofirmados

Estoy usando Boost's asio para conectarme a un sitio a través de HTTPS. Quiero que esto solo tenga éxito si el certificado es válido, no ha caducado, no está autofirmado, etc. Desafortunadamente, parece que siempre funciona independientemente. Aquí está mi código:

try
{
    asio::io_service ioService;
    asio::ssl::context sslContext(asio::ssl::context::sslv3_client);

    sslContext.load_verify_file("cacert.pem");

    asio::ip::tcp::resolver resolver(ioService);
    asio::ip::tcp::resolver::query query("self-signed.badssl.com", "443");
    asio::ip::tcp::resolver::iterator endpointIterator = resolver.resolve(query);

    boost::asio::ssl::stream<boost::asio::ip::tcp::socket> socket(ioService, sslContext);

    ioService.run();

    // Enable SSL peer verification.
    socket.set_verify_mode(asio::ssl::verify_peer | asio::ssl::verify_fail_if_no_peer_cert);

    asio::connect(socket.lowest_layer(), endpointIterator);

    socket.handshake(asio::ssl::stream_base::client);

    boost::asio::streambuf request;
    std::ostream requestStream(&request);
    requestStream << "GET / HTTP/1.0\r\n";
    requestStream << "Host: self-signed.badssl.com\r\n";
    requestStream << "Accept: */*\r\n";
    requestStream << "Connection: close\r\n\r\n";

    asio::write(socket, request);

Y así. Si yo usoset_verify_callback() y volverfalse desde la devolución de llamada, la conexión falla, peropreverified siempre parece ser cierto, incluso parahttps://self-signed.badssl.com/. ¿Seguramente eso no está bien?

Respuestas a la pregunta(2)

Su respuesta a la pregunta