奇怪的Qt SSL问题 - 错误“没有错误”显示出来,没有别的,如果我不理它,一切正常(Weird

2019-10-16 14:47发布

这个问题是:在我的Qt应用程序,我有一个QWebView,我用它来加载HTTPS网页。

一切工作我的机器上很好,所以现在我试图让它在测试机器上运行。 我跑的应用程序,但该页面没有加载(在QWebView是空白)。 许多调试后,我发现这个问题是SSL错误显示出来,并且sslErrors()信号被触发。

这里是我的sslErrors()处理代码:

void blah::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors) {
  foreach(QSslError error, errors) {
    qDebug() << error.errorString() << endl;
  }
  reply->ignoreSslErrors();
}

唯一上面的代码打印为:

"No error"

因此,有没有错误,但除非我打电话reply->ignoreSslErrors()页面没有加载(在测试机上,我的开发人员的电脑上没有错误报告)。 咦? 这是一个错误?

它是安全的忽略错误,如果我要确保它的类型“没有错误”的?

Answer 1:

QSslSocket建立一个NOERROR SslError 只翻译了OpenSSL的时候X509_V_OK错误 。

该OpenSSL文档报告 :

如果没有对证书提出,返回的结果代码是X509_V_OK。 这是因为没有发生校验错误,但它确实不表明成功。

您应该使用tcpdump的或类似的工具来检查证书是否正确等体之间交换。



Answer 2:

您可能会被击中QTBUG-28343这是由于你的Qt被一起编译的版本和您正在运行一个与OpenSSL中的一个二进制不兼容。 这将固定在Qt的4.8.5。

http://lists.qt-project.org/pipermail/announce/2013-January/000020.html https://bugreports.qt-project.org/browse/QTBUG-28343



文章来源: Weird Qt SSL issue — error “No Error” shows up, nothing else, and if I ignore it, everything works