缺少 Qt SSL 支持

Posted

技术标签:

【中文标题】缺少 Qt SSL 支持【英文标题】:Qt SSL support missing 【发布时间】:2010-08-18 19:55:43 【问题描述】:

我刚刚下载了 Qt(LGPL - Qt SDK for Windows),当我运行一些演示时,他们抱怨 Qt 没有 SSL。 如何获得启用 SSL 的 Qt SDK?我真的需要从源代码编译它以获得 SSL 支持吗?为什么我下载的版本没有?

【问题讨论】:

【参考方案1】:

@user261882 的回答只是部分正确。他说 Qt 不支持 SSL 并且您确实需要下载 OpenSSL libraries 是正确的。

但是,之后的链接过程要简单得多,您无需在下载 SSL 库后重新构建 Qt 或弄乱 Microsoft Visual 的东西。 Qt 让您轻松搞定。

下载 SSL 库后,您需要做的就是确保 Qt 可以找到这些 openSSL 库所在的位置。 如果在下载期间您选择了将 openSSL DLL 复制到 Windows 的选项系统目录,Qt 将自动在该目录中查找 openSSL 二进制文件,因为 Windows 系统目录总是由 Windows 搜索。

如果您不想在 Windows 系统目录中安装 openSSL 库,那很好,您只需告诉 Qt openSSL DLL 的位置。您可以通过多种方式执行此操作...一种可能的解决方案是将 openSSL DLL 的位置添加到系统 PATH 中。另一个简单的解决方案是将 openSSL DLL 复制到包含可执行文件的目录中。保证也能搜索到这个目录。

您可以在之后运行一个简单的检查来查看这是否有效,即调用静态函数QSslSocket::supportsSsl(),如果此函数返回 true,则 Qt 已找到您下载的 openSSL 二进制文件。(的当然,请确保在运行此测试之前在 .pro 文件中添加 Qt += network

使用 Qt Creator 2.5.2 和 Win32 OpenSSL 库 v1.0.1c 使用 Qt 4.8.3 二进制文件进行测试

希望这可以为大家节省一些时间。这样做你不需要去搜索 Visual Studio 文件,而且更简单。

【讨论】:

【参考方案2】:

要为 Qt 启用 SSL,您首先必须下载 OpenSSL 包。为此,我建议下载可用的 OpenSSL 二进制文件here. 安装二进制文件并阅读它们附带的帮助。

此部分用于在 Microsoft Visual C++ 下安装 OpenSSL 二进制文件(下面的文字来自二进制文件的帮助)

OpenSSL 旨在轻松构建 在 Microsoft Visual C++ 下。然而, 你去获得的要求 25MB Win98 DDK 并拥有最新的 已安装服务包(SP5 为 120MB) 可以证明是对某些人的阻碍 人(尤其是那些 调制解调器)。

那么,安装Win32 OpenSSL 二进制文件是一个相当简单的 进程(类似于 Borland C++ 生成器进程)。

要做的第一件事(假设 'C:\OpenSSL' 的默认安装) 是去 'C:\OpenSSL\lib\VC' 和 将所有文件复制到您的 Visual C++ 'lib' 目录。这个目录是 有时位于有点 神秘的位置,例如 'C:\Program 文件\微软视觉 Studio\VC98\lib' 或 'C:\Program 文件\Microsoft Visual C++\lib'。

接下来,复制文件中的所有内容 'C:\OpenSSL\include' 目录到您的 Visual C++ 'include' 目录。

就是这样!你准备好去写了 支持 OpenSSL 的代码!

设置正确的参数后,您现在可以配置 Qt 以启用 SSL 支持。 运行configure.exe -debug-and-release -webkit -openssl -I C:\openssl\Include -L C:\openssl\Lib,然后运行nmake。您已启用 SSL 支持。不要忘记将 Qt += network 放入您的 .pro 文件中。

这对我和我的同事都有效,对你也应该有效:)。

【讨论】:

【参考方案3】:

来自Qt Documentation,

从源代码构建 Qt 时,配置系统会检查 OpenSSL 的源代码或开发人员包提供的 openssl/opensslv.h 标头是否存在。由于世界某些地区的进出口限制,我们无法为 OpenSSL Toolkit 提供 Qt 软件包。希望在其部署的应用程序中使用 SSL 通信的开发人员应该确保他们的用户安装了适当的库,或者他们应该咨询具有适当资格的法律专业人士,以确保使用 OpenSSL 项目代码的应用程序是正确的在世界相关地区获得进出口认证。

如果您已经安装了 OpenSSL,请尝试提供

Qt += network 在您的.pro 文件中..

希望对你有帮助..

【讨论】:

【参考方案4】:

QT 5.15:

    确保您已使用 Qt 维护工具安装了 OpenSSL Toolkit 转到 C:\Qt\Tools\OpenSSL\Win_x64\bin 并搜索“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll” 将它们复制到编译器文件夹(C:\Qt\5.15.2\msvc2019_64\bin)

注意:如果您编译 x86 变体,您必须从 Win_x86 文件夹中复制 DLL。

我在这里找到了这个答案:https://www.programmersought.com/article/71774817627/

【讨论】:

以上是关于缺少 Qt SSL 支持的主要内容,如果未能解决你的问题,请参考以下文章

qt查看是否支持SSL

Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)

配置nginx支持https

ssl 套接字不支持错误

Qt 技巧: 解决未解析的SSL问题

QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种,实测成功)