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?