【问题标题】:getting openSSL to work with Qt on mac让 openSSL 在 Mac 上与 Qt 一起工作
【发布时间】: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 版

标签: macos qt https openssl


【解决方案1】:

SSL 警告不是致命的;安全连接应该继续工作。根据this closed bug report,您可以通过设置以下环境变量来抑制这些消息:

QT_LOGGING_RULES=qt.network.ssl.warning=false

另外,我相当肯定这些警告消息(或非常相似的消息)出现在 OS X 以外的平台上。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2017-07-10
    相关资源
    最近更新 更多