如何在QT windows应用程序中启用SSL
how can I enable SSL in QT windows application?
Qt要求在系统上安装开放的ssl库。在debian/ubuntu中,当我使用apt安装openssl时,一切都正常。但是当我在windows中编译我的应用程序时,SSL功能不可用,我可以通过执行来验证这一点
QSslSocket::supportsSsl()
我如何使它在窗口中工作?我从下载并安装了开放sslhttp://www.slproweb.com/products/Win32OpenSSL.html但它仍然返回false。
所以过了很长时间,我发现问题是什么:
这两个库需要和你的可执行文件在同一个文件夹中,或者在windows系统文件夹中(我认为是system32):
libeay32.dll
ssleay32.dll
你会在OpenSSL文件夹的\bin中找到它们,因为我在那里复制了这两个库,所以它可以
重要信息:在部署到客户端计算机时,还需要安装用于编译这些.dll的vcredist包,该包可能与运行应用程序本身所需的vcredst包不同。vcredist的版本取决于库的版本。
您必须在项目中添加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
}
正如您已经发现的,您缺少dll。以下是更多信息
使用检查您需要的ssl版本
QSslSocket::sslLibraryBuildVersionString();
对于ssl 1.0.x(qt<5.12.4),您可能缺少libeay32.dll和ssleay32.dll.
对于ssl 1.1.x(qt>=5.12.4),二进制兼容性已中断(qt 5.12.4已发布),因此您可能需要libssl-1_1.dll和libcrypto-1_1.dll及其依赖项capi.dll和dasync.dll。
- 编译时未启用intel oneApi CUDA支持
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- OpenGL在启用深度测试时不会丢弃我的碎片
- Visual C++GC接口如何启用它以及要包含哪个库
- 如何在自定义类中启用'auto loops'?
- 根据某个函数是否存在启用模板
- 视觉工作室 2017;启用 /permissive 时,类型 "const wchar_t *" 的参数与类型 "PWSTR" 的参数不兼容
- 启用从"vector<const T>&"到"const vector&"的隐式转换<T>
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- Mongocxx无法使用SSL连接到mongoDB
- 在 Eclipse 上启用 C++17 以使用 'std::byte'
- 当 noexcept 函数尝试在 gcc 或 clang 中调用非 noexcept 函数时启用警告
- 如何为一段代码启用 -permissive
- 如何使用MinGW编译器和SSL支持静态编译Qt
- 是否可以/希望创建不可复制的共享指针模拟(以启用weak_ptr跟踪/借用类型语义)?
- 在 GCC 中启用"differing levels of indirection"警告/错误
- 如何在QT windows应用程序中启用SSL
- 在启用 SSL 的情况下构建 libircclient 时对 'DLopen' 的未定义引用
- 如何在windows上编译启用ssl的gSoap