Boost SSL überprüft abgelaufene und selbstsignierte Zertifikate

Ich verwende Boosts Asio, um über HTTPS eine Verbindung zu einer Site herzustellen. Ich möchte, dass dies nur gelingt, wenn das Zertifikat gültig, nicht abgelaufen, nicht selbstsigniert usw. ist. Leider scheint es unabhängig davon immer zu funktionieren. Hier ist mein Code:

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);

Und so weiter. Wenn ich @ benutset_verify_callback() und zurückfalse Vom Rückruf schlägt die Verbindung fehl, aberpreverified scheint immer wahr zu sein, auch fürhttps: //self-signed.badssl.com. Sicher ist das nicht richtig?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage