今天我來找你,因爲我的客戶端+服務器應用程序出現問題。我構建了一個服務器和客戶端應用程序,它們與QTcpSocket一起工作正常,但我想過要增加一些安全性,並考慮延遲握手時間爲QSslSocket 。問題是我的客戶行爲真的很奇怪。這裏的情況是:SSL握手過程中出錯qt
- 如果我在客戶端使用
connectToHostEncrypted()
,只是歌廳在我incomingConnection插槽插座能正常工作後打電話startServerEncryption()
。 - 但是,如果我延遲握手(通過在套接字中進行一些讀/寫操作)並稍後調用
startServerEncryption()
,我在服務器端得到了錯誤:Error during SSL handshake: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
。我也嘗試在客戶端使用startClientEncryption()
,但我得到相同的錯誤。
證書是自簽名和裝載配方並應用於插座正確地在服務器上(我檢查通過測試使用OpenSSL的s_client.First第一種情況下,服務器接受所有,我可以(SSLv3的,使用TLSv1測試協議, TLSv1.1,TLSv1.2)。我無法使用SSLv2進行測試:在客戶端上,使用此協議並使用QSslSocket::setProtocol(QSsl::SslV2)
顯示錯誤unsupported protocol
並且openssl s_client不會與-ssl2參數連接,它只顯示可用參數。
我正在使用Qt 5.9.1,並且我已經安裝了OpenSSL-Win32 v1.0.2L來獲取dll,並且我正在使用Windows 7 64bit上的msvc2015 32位編譯器 我希望你能幫助我(和對不起我的爸爸d英語),尼古拉斯。