【问题标题】:how can I enable SSL in QT windows application?如何在 QT windows 应用程序中启用 SSL?
【发布时间】:2013-12-03 12:25:36
【问题描述】:

Qt 需要在系统上安装开放的 ssl 库。在 debian / ubuntu 中,当我使用 apt 安装 open ssl 时,一切正常。但是当我在 Windows 中编译我的应用程序时,SSL 功能不可用,我可以通过执行来验证这一点

QSslSocket::supportsSsl()

如何让它在 Windows 中工作?我从 http://www.slproweb.com/products/Win32OpenSSL.html 下载并安装了 open ssl,但它仍然返回 false。

【问题讨论】:

    标签: c++ qt ssl


    【解决方案1】:

    所以经过很长时间我想出了问题所在:

    这 2 个库需要与您的可执行文件位于同一文件夹中或在 Windows 系统文件夹中(我认为是 system32):

    libeay32.dll
    ssleay32.dll
    

    您会在 OpenSSL 文件夹的 \bin 中找到它们,因为我将这 2 个库复制到那里,它可以工作

    重要提示:在部署到客户端计算机时,还需要安装用于编译这些 .dll 的 vcredist 软件包,该软件包可能与运行应用程序本身所需的 vcredist 软件包不同。 vcredist 版本取决于库的版本。

    【讨论】:

    • 我在安装太新的版本时遇到了问题,所以对于仍然有这个问题的其他人:检查QSslSocket::sslLibraryBuildVersionString(); 并确保安装相同的 X.Y 版本的 OpenSSL(我使用的是 1.1.0 但需要 1.0. X)
    • DLL 可以在这里找到:gnuwin32.sourceforge.net/packages/openssl.htm 在 Windows“二进制”包中。
    • @TomášNavara 这应该是正确的答案。 Qt SSL 文档说 Qt 与 OpenSSL 1.0+ 或类似的东西兼容,但它似乎不会加载与 QSslSocket::sslLibraryBuildVersionString(); 返回的版本不同的库。它将加载一个带有不同后缀字母(错误修复版本增量)的文件。它对我有用。
    【解决方案2】:

    您必须在项目中添加 OpenSSL 库。在 Windows 中,Qt 不附带 OpenSSL 库。 (我认为这是一个法律问题)。您可以在您发布的URI 中找到 OpenSSL 开发人员库。如果你是针对 32 位框架编译,你需要下载的是 Win32 OpenSSL v1.0.1e

    这就是我的项目中的内容。

    QT += core gui network
    win32{
        LIBS += -LC:/OpenSSL-Win32/lib -lubsec
        INCLUDEPATH += C:/OpenSSL-Win32/include
    }
    

    【讨论】:

    • 我照你说的做了,清理,重建,但它仍然是假的
    • 您使用的确切 qt 版本是什么?它在 Qt 5.1 中运行良好,我目前也在 Qt 5.2 R1 中使用。
    • 您是否在项目文件中添加了网络模块? “Qt += 网络”。并且不要忘记运行“qmake”。有时 qt 似乎不明白我们已经更改了项目文件。
    • QT 5.1.1 我有网络模块,正如我所说,它适用于 linux,但不适用于 windows。是的,我确实清理了所有内容,运行了 qmake 和 make,但它仍然无法在 Windows 中运行。顺便说一句,我正在使用 mingw 编译
    • 可能是 MinGW 相关问题。我正在使用 VC++。由于缺少 Angle 支持,我放弃了 MinGW。
    【解决方案3】:

    正如您已经发现的那样,您缺少 dll。这里有更多信息

    检查您需要的 ssl 版本

    QSslSocket::sslLibraryBuildVersionString();
    

    对于 ssl 1.0.x (qt

    对于 ssl 1.1.x (qt>=5.12.4) 二进制兼容性破坏了(qt 5.12.4 released),因此您可能需要 libssl-1_1.dll 和 libcrypto-1_1.dll 及其依赖项 capi.dll 和 dasync.dll。

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 2013-02-05
      • 1970-01-01
      • 2016-01-29
      • 2016-04-23
      • 1970-01-01
      • 2014-08-27
      • 2021-07-04
      • 2010-10-11
      相关资源
      最近更新 更多