2016-01-06 118 views
0

我正在做一些API調用谷歌地圖,其中一些需要加密,所以我使用的是https。每當我使用HTTPS提出請求我得到的錯誤:讓openSSL與mac上的Qt一起工作

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而不會出錯,請給出具體的說明,因爲我不是很有經驗。

謝謝

+0

那些其他平臺是警告,而不是錯誤。由於Qt是使用更新的OpenSSL版本構建的,因此它會嘗試解決一些您沒有的額外功能。此外,最近的Qt版本甚至不使用OS X上的OpenSSL,而是使用SecureTransport。那是哪個Qt版本? – peppe

+0

@peppe版本5.5 – user2471711

回答

1

SSL警告不是致命的;安全連接應該繼續工作。據this closed bug report您可以通過設置以下的環境變量來取消這些消息:

QT_LOGGING_RULES=qt.network.ssl.warning=false 

而且,我敢肯定這些警告消息(或非常相似的消息)出現在比OS X.