【发布时间】:2016-01-06 19:02:52
【问题描述】:
我正在对谷歌地图进行一些 api 调用,其中一些需要加密,所以我使用的是 https。每当我使用 https 发出请求时,我都会收到错误消息:
qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_client_callback
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_server_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSL_select_next_proto
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
qt.network.ssl: QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_get0_next_proto_negotiated
我在使用 http 时也会收到这些错误,但我仍然会收到我想要的数据,而使用 https 我不会。 我看到这显然是因为我没有安装 openSSL,所以我检查了一下,我有版本 0.9.8,所以我安装了一个更新的版本(1.0.2)(注意我在 mac 上)但仍然有同样的问题.我见过很多类似的问题,但要么没有解决方案,要么有一个解决方案对我不起作用,或者我不明白该怎么做。
我运行了以下代码:
qDebug() << "Support SSL: " << QSslSocket::supportsSsl()
<< "\nLib Version Number: " << QSslSocket::sslLibraryVersionNumber()
<< "\nLib Version String: " << QSslSocket::sslLibraryVersionString()
<< "\nLib Build Version Number: " << QSslSocket::sslLibraryBuildVersionNumber()
<< "\nLib Build Version String: " << QSslSocket::sslLibraryBuildVersionString();
并收到输出:
qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_client_callback
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_server_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSL_select_next_proto
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
qt.network.ssl: QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
Support SSL: true
Lib Version Number: 9470431
Lib Version String: "OpenSSL 0.9.8zg 14 July 2015"
Lib Build Version Number: 268439727
Lib Build Version String: "OpenSSL 1.0.1j 15 Oct 2014"
列出的版本不是我最近安装的版本,所以问题可能是它没有使用新版本吗?
如果有人知道如何解决这个问题,以便我可以毫无错误地使用 https,请给出具体说明,因为我不是很有经验。
谢谢
【问题讨论】:
-
这些是警告,而不是错误。由于 Qt 是使用更新的 OpenSSL 版本构建的,它会尝试解决一些您没有的额外功能。此外,最近的 Qt 版本甚至没有在 OS X 上使用 OpenSSL,而是使用 SecureTransport。那是哪个 Qt 版本?
-
@peppe 5.5 版