奇怪的Qt SSL问题 - 错误“无错误”出现,没有别的,如果我忽略它,一切正常

时间:2012-04-15 22:44:26

标签: windows qt ssl error-handling

问题如下:在我的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(),否则页面不会加载(在测试计算机上,在我的开发者计算机上没有报告错误)。咦?这是一个错误吗?

如果我确定它是“无错误”类型,是否可以安全地忽略错误?

2 个答案:

答案 0 :(得分:1)

您可能会遇到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

答案 1 :(得分:0)

QSslSocket构建NoError SslError only when translating an OpenSSL X509_V_OK error

OpenSSL documentation reports

  

如果未显示对等证书,则返回的结果代码为   X509_V_OK。这是因为没有发生验证错误   但并不表示成功。

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