我在Windows中使用MinGw在Qt 5.9中构建了一个桌面应用程序,它从数据库中提取数据并以有组织的方式将其显示在GUI中。
在发布配置中部署项目在我测试的4台不同计算机上运行良好(Windows 10和Windows 7)
但是,在我的客户端计算机中,每当尝试连接时都会出现SSL握手错误。
发生错误:
qml: Error during SSL handshake: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
我在这里找到的当前解决方案并尝试过:
在我的发布文件夹中部署openssl最新dll(以及qt' dll)
实现ignoreSslErros(),如下面的代码所示:
QObject::connect(_socket, SIGNAL(sslErrors(QList<QSslError>)), _socket,SLOT(ignoreSslErrors()));
使用的信号和插槽在QWebSocket的文档中定义。
SLOT:http://doc.qt.io/qt-5/qwebsocket.html#ignoreSslErrors
SIGNAL:http://doc.qt.io/qt-5/qwebsocket.html#sslErrors
这种实施方式无效。
我已经到了远程访问我的客户端计算机并在调试配置中运行Qt的问题,我唯一得到的是这些构建警告,当我在我的计算机上构建时不会发生:
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 resolve SSL_set_alpn_protos
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_alpn_select_cb
qt.network.ssl: QSslSocket: cannot resolve SSL_get0_alpn_selected
答案 0 :(得分:0)
鉴于警告,我建议客户端计算机上的OpenSSL库不支持TLS 1.1+,但服务器需要它。虽然您可能尝试提供新的SSL库,但这些消息显示您的程序不使用这些新库。