使用Poco的HTTPS:证书验证失败

时间:2016-06-11 10:42:50

标签: c++ ssl https poco-libraries

我尝试使用这个小程序使用POCO库运行HTTPS:

int main()
{
    // For debugging purposes to inspect verification errors.
    SharedPtr<InvalidCertHandler> invalidCertHandler(new InvalidCertHandler());

    URI uri("https://google.com/");

    Context::Ptr ctx = new Context(Context::CLIENT_USE, "", Context::VerificationMode::VERIFY_RELAXED, 9, true);
    SSLManager::instance().initializeClient(nullptr, invalidCertHandler, ctx);
    HTTPSClientSession httpSession(uri.getHost(), uri.getPort(), ctx);
    HTTPRequest request(HTTPRequest::HTTP_GET, uri.getPath(), HTTPRequest::HTTP_1_1);
    HTTPResponse response;

    try
    {
        httpSession.sendRequest(request);
        httpSession.receiveResponse(response);
    }
    catch (Exception ex)
    {
        cout << ex.message() << endl;
        return -1;
    }

    cout << "Success" << endl;
    return 0;
}

不幸的是,在运行程序时我总是收到以下异常消息:

error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

InvalidCertHandler中的以下消息:

unable to get local issuer certificate

之后,我在https://google.com/中打开Google Chrome并在Base64-encoded X.509 Format (.CER)中导出证书,并使用Context文件的绝对路径初始化.cer,而不是只是一个空字符串。那也没有用。

我不知道我在这里做错了什么,但我想知道 你们中的任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案