我尝试使用这个小程序使用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
,而不是只是一个空字符串。那也没有用。
我不知道我在这里做错了什么,但我想知道 你们中的任何人都可以帮我解决这个问题吗?