Я пытаюсь выполнить SSL-квитирование с помощью www1.filemail.com
. Я использую cURL cacert.pem
, но я получаю эту ошибку:
Unacceptable certificate from 188.138.81.30: application verification failure
Создание рукопожатия на любом другом веб-сайте 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();