C++ 只有在客户端部署时,Qt5.9才会出现SSL握手问题

C++ 只有在客户端部署时,Qt5.9才会出现SSL握手问题,c++,windows,qt,ssl,C++,Windows,Qt,Ssl,我有一个在Qt5.9中使用Windows中的MinGw构建的桌面应用程序,它从数据库中提取数据,并以有组织的方式在GUI中显示数据 在我测试过的4台不同的计算机(windows 10和windows 7)上,发布配置中的项目部署工作正常 但是,在我客户的计算机中,每当尝试连接时都会出现SSL握手错误 发生的错误是: qml: Error during SSL handshake: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 a

我有一个在Qt5.9中使用Windows中的MinGw构建的桌面应用程序,它从数据库中提取数据,并以有组织的方式在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一起)

  • 实现ignoressleros(),如下面的代码所示:

    QObject::connect(_socket, SIGNAL(sslErrors(QList<QSslError>)), _socket,SLOT(ignoreSslErrors()));
    

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

    这帮助我解决了问题,我将服务器TLS要求降级为1.0。我们使用Caddy(),我必须更改Caddy文件。谢谢
    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