Qt 5.9的SSL握手问题仅在部署在客户端

时间:2017-06-26 17:57:48

标签: c++ windows qt ssl

我在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

1 个答案:

答案 0 :(得分:0)

鉴于警告,我建议客户端计算机上的OpenSSL库不支持TLS 1.1+,但服务器需要它。虽然您可能尝试提供新的SSL库,但这些消息显示您的程序不使用这些新库。