Poco + OpenSSL + CA PEM:2个相同站点中的1个出现"不可接受的证书"错误

Njå*_*aug 10 c++ ssl openssl pki poco-libraries

我正在尝试与SSL进行SSL握手www1.filemail.com.我正在使用cURL cacert.pem,但我收到此错误:

Unacceptable certificate from 188.138.81.30: application verification failure
Run Code Online (Sandbox Code Playgroud)

与任何其他HTTPS网站进行握手有效 - 包括www2.filemail.com.www1并且www2应该配置相同 - 并且它们在所有浏览器中都能正常工作.他们也在这里测试很好(两个站点都发送了相同的证书和中间证书):

为什么我www1使用OpenSSL和cacert.pem文件会遇到这个问题?

www1和www2的证书设置必须有所不同.我已经使用无数的工具(openssl,ssllabs等)进行了测试,试图找出差异 - 但我总是得到两个站点完全相同的结果(运行我的代码时除外)

我在这里错过了什么?这些网站有什么区别?

(应该注意的是,我们使用的是RapidSSL提供的相对便宜的通配符证书 - 所以我猜它与中间证书或跨根证书有关 - 但是当使用上面提到的工具进行测试时,一切似乎都是有序的.)


码:

Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> pCert = new Poco::Net::ConsoleCertificateHandler(false);
Poco::Net::Context::Ptr pContext = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "C:\\cacert.pem", Poco::Net::Context::VERIFY_RELAXED, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
Poco::Net::SSLManager::instance().initializeClient(0, pCert, pContext);

URI uri("https://www1.filemail.com");
Poco::Net::SecureStreamSocket ss(Poco::Net::SocketAddress(uri.getHost().c_str(), uri.getPort()));
ss.completeHandshake();
Run Code Online (Sandbox Code Playgroud)

Njå*_*aug 3

G\xc3\xbcnter Obiltschnig 通过 POCO@Github 帮助我,并通过替换使其工作

\n\n
Poco::Net::SecureStreamSocket ss(Poco::Net::SocketAddress(uri.getHost().c_str(), uri.getPort()));\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
Poco::Net::SecureStreamSocket ss(Poco::Net::SocketAddress(uri.getHost().c_str(), uri.getPort()), uri.getHost());\n
Run Code Online (Sandbox Code Playgroud)\n\n

(包括 SecureStreamSocket 构造函数中的主机名 - 它用于证书验证)

\n\n

来自 POCO 文档:

\n\n
SecureStreamSocket(\n    const SocketAddress & address,\n    const std::string & hostName\n);\n\n//Creates a secure stream socket using the default client SSL context and connects it to the socket specified by address.\n//The given host name is used for certificate verification <=======\n
Run Code Online (Sandbox Code Playgroud)\n\n

我仍然不知道 www1 和 www2 之间配置的确切区别,如果有人能启发我,我会很高兴。

\n