1

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

如果我确保它是“无错误”类型,忽略该错误是否安全?

4

2 回答 2

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

于 2013-02-09T16:00:03.470 回答
0

QSslSocket仅在翻译 OpenSSLX509_V_OK错误时生成 NoError SslError 。

OpenSSL 文档报告:

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

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

于 2012-04-15T23:24:00.987 回答