HTTPS-Anforderung in c++, Poco

Ich bin versucht, zu schreiben eine client-Anwendung in C++, Poco-Bibliotheken (version poco-1.4.6p1-alle) und das kompilieren in Visual Studio 2010, sendet eine HTTPS-Anforderung an einen server, der hat ein selbst geschriebenes Zertifikat. Ich habe einen Fehler, da das Zertifikat nicht anerkannt:

First-chance exception at 0x76e8c41f in httprequest.exe: Microsoft C++ exception: Poco::Net::SSLException at memory location 0x0044ed38..

Ich habe versucht, die änderung der verify-Funktionen, die in der Bibliothek (in X509Certificate.h) so, dass Sie immer true zurück und baute die Bibliothek. Gleichen Fehler.

Hier ist der 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("[email protected]", "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;;
}

Danke!

  • Ich erkannte, dass diese Ausnahme wird ausgelöst, unabhängig von der server ich versuche zu verbinden. Könnte es an einer fehlerhaften installation von OpenSSL?
  • Ich habe dich gefunden, Antwort. Das problem war, dass ich nicht wirklich das Zertifikat zu erhalten. Es funktioniert wie folgt:
InformationsquelleAutor CJJ | 2013-08-19
Schreibe einen Kommentar