我遇到问题。我制作了一个连接到https站点的Qt应用程序。 在我的工作机器上,一切正常。当我尝试测试我一个干净的Windows 7机器上的应用程序,我发现了以下问题:Qt&SSL,握手失败
我已经安装了新鲜的Win7机(安装所有更新)后,开始我的应用程序后,我收到了SSL握手失败错误,SIGNAL(sslErrors(QNetworkReply *,QList))与两个空错误字符串一起发出并且错误= QSslError :: NoError。 我真的在搜寻整天为什么发生这种情况,也可以用examples \ network \ securesocketclient \ release \ securesocketclient和domain“google.com”重现它。
现在,我发现,一旦我启动了访问https://www.google.com的Internet Explorer,我的应用程序也按预期工作,并且不会再出现握手错误。
顺便说一句,您访问哪个网站并不重要 - 这与google.com无关。
有人可以向我解释为什么会发生这种情况吗?这是OpenSSL或Qt中的一个错误吗?
UPDATE
我找到了一种生活在这个问题我自己,实现以下忽略逻辑:
QSslError ignoreNOErrors(QSslError::NoError);
foreach(QSslError error, errors)
if(error.error() != QSslError::NoError)
qDebug() << error.errorString();
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(ignoreNOErrors);
reply->ignoreSslErrors(expectedSslErrors);
感谢
好吧,似乎没有人有一个好主意。如何使用http://qt-project.org/doc/qt将GeoTrust(https://www.geotrust.com/resources/root-certificates/)中的根证书添加到套接字的CA证书数据库中-4.8/qsslsocket.html#addCaCertificate?至少,这听起来像是一个合理的解决方法。任何想法? – inspector