前言
开发过程中需要上传数据,URL是https的,Qt默认是http网络请求,访问https需要用到SSL认证,而Qt默认不支持,需要自己编译OpenSSL库。
一、下载OpenSSL
环境:Qt 5.12.2 MSVC 2017,32bit ,可通过下面代码,知道是否支持ssl,以及ssl的版本。
如下图所以:不支持,OpenSSL的版本是1.0.2p
OpenSSL下载地址大家可以到官网下载符合自己的版本安装:OpenSSL下载地址
上面没有我需要的版本,要到旧版本下载,编译:OpenSSL下载老版本地址
下载完之后,解压。
二、环境准备
下载完OpenSSL之后,我们还需要下载一下编译的软件。
1、下载并安装Visual Studio(我电脑已经下载好了VS 2015)
2、下载并安装ActivePerl
下载地址:http://www.activestate.com/activeperl/downloads
官网下载还需要先注册登录,所以我在其他地方下载了:非官网下载
打开命令提示符,输入 prel -v,说明安装成功
3、下载并安装Nasm汇编器,并将安装的路径添加到系统环境变量Path中
下载地址:http://www.nasm.us/
三、编译
1、编译out32dll
# 将其安装到 D:\OpenSsl\32
perl Configure VC-WIN32 --prefix=D:\OpenSsl\32
ms\do_nasm
# 进到下面目录
cd D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
# 输入下面指令,如果没有这一步,会提示nmake不是内部命令或者出现一系列错误
vcvars32.bat
#再回到OpenSSL的目录
cd D:\Download\openssl-1.0.2p
nmake -f ms\ntdll.mak
完成之后,会在 openssl-1.0.2p
目录下生成一个名为 out32dll 的文件夹,里面包含了一些动态库和 exe 文件。
2、测试
输入 nmake -f ms\ntdll.mak test,
若最终显示 passed all tests
则说明生成的库正确:
3、输入 nmake -f ms\ntdll.mak install
完成之后,会在 D:\OpenSsl\32
目录下生成 bin、include、lib、ssl 四个文件夹:
4、拷贝dll
把bin目录下的libeay32.dll、ssleay32.dll拷贝到Qt的安装目录下,我这里是D:\Qt\Qt5.12.3\5.12.3\mingw73_32\bin
5、运行
打开Qt,重新运行程序。发送的https请求,能得到响应。