如何在QT windows应用程序中启用SSL?

时间:2013-12-03 12:25:36

标签: c++ qt ssl

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

来验证这一点
QSslSocket::supportsSsl()

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

3 个答案:

答案 0 :(得分:15)

所以很长一段时间后我才知道问题是什么:

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

libeay32.dll
ssleay32.dll

你会在你的OpenSSL文件夹的\ bin中找到它们,因为我在那里复制了这两个库它

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

答案 1 :(得分:8)

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

这就是我项目中的内容。

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

答案 2 :(得分:1)

您已经知道,您缺少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 released),因此您可能需要libssl-1_1.dll和libcrypto-1_1.dll及其依赖项capi.dll和dasync。 dll。