I am trying to write a client application in C ++ using Poco Libraries (version poco-1.4.6p1-all) and compile in Visual Studio 2010, which sends an HTTPS request to the server with a certificate recorder. I have an error because the certificate is not recognized:
First-chance exception at 0x76e8c41f in httprequest.exe: Microsoft C++ exception: Poco::Net::SSLException at memory location 0x0044ed38..
I tried changing the validation functions written to the library (in X509Certificate.h) so that they always return true and rebuild the library. The same error.
Here is the code:
try{ const Poco::URI uri("https://www.theServer.com"); Poco::Net::Context::Ptr context = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "","",Poco::Net::Context::VERIFY_RELAXED, 9, true, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> pAcceptCertHandler = new Poco::Net::AcceptCertificateHandler(true); Poco::Net::SSLManager::instance().initializeClient(NULL, pAcceptCertHandler, context); Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context ); Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, "" ); req.setContentType("application/x-javascript; charset=utf-8\r\n"); req.setKeepAlive(true); Poco::Net::HTTPBasicCredentials cred(" lala@lala.lala ", "lala"); cred.authenticate(req); session.sendRequest(req); Poco::Net::HTTPResponse res; std::istream& rs = session.receiveResponse(res); std::string resp; std::vector<Poco::Net::HTTPCookie> cookies; res.getCookies( cookies ); res.write(std::cout); } catch( const Poco::Net::SSLException& e ) { std::cerr << e.what() << ": " << e.message() << std::endl; } catch( const std::exception& e ) { std::cerr << e.what() << std::endl;; }
Thanks!
Cjj
source share