1 查看自己QT支持的OPenSSL版本号

#include <QDebug>
#include <QtNetwork/QSslSocket>
#include <QDebug>
#include <QNetworkAccessManager>
void checkSslSupport() {
    qDebug() << "SSL support:" << QSslSocket::supportsSsl()
             << "\nSSL library build version:" << QSslSocket::sslLibraryBuildVersionString()
             << "\nSSL library runtime version:" << QSslSocket::sslLibraryVersionString();

    QNetworkAccessManager *manager = new QNetworkAccessManager();
    qDebug() << manager->supportedSchemes();
}

1.1 查看版本号

  1. 新建项目testOpenSSL
  2. pro文件中加入QT += network
  3. 在头文件中加入#include <QDebug> #include <QSslSocket>
  4. qDebug()<<QSslSocket::sslLibraryBuildVersionString();
    在这里插入图片描述

1.2 是否配置了OPenSSL

//看看是否配置了ssl
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
qDebug() << manager->supportedSchemes();

在这里插入图片描述

2 安装OPenSSL

安装OPenSSL有两种方式:

  1. 下载已经编译好的库,放到指定位置
  2. 自己编译源码

2.1 下载已经编译好的库

https://slproweb.com/products/Win32OpenSSL.html

  1. 找到自己QT支持的版本,我的版本是“OpenSSL 1.1.1g 21 Apr 2020”
    在这里插入图片描述
    安装完成之后,运行刚才的程序:
    在这里插入图片描述
    已经支持SSL了,方便快捷。

需要将对应的库放到可执行的文件,同级文件下,否则会出错:
在这里插入图片描述

2.2 自己编译代码

https://www.openssl.org/
https://blog.csdn.net/u013052326/article/details/111713932

2.2.1 下载perl

perl:https://www.perl.org/get.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查环境变量,如果软件没有自己加入,请手动加入
在这里插入图片描述
验证,出现以下内容则表示成功
在这里插入图片描述

2.2.1 下载OPenSSL源码

以OpenSSL 1.0.2 22 Jan 2015为例
在这里插入图片描述

以管理员身份运行:
在这里插入图片描述
cd /d D:\vs\openssl-1.0.2.tar\openssl-1.0.2进入源文件

  1. 配置
    32位
perl Configure VC-WIN32 no-asm --prefix="D:\\vs\\openssl-1.0.2.tar\\build32"

64位

perl Configure VC-WIN64A no-asm --prefix="D:\\vs\\openssl-1.0.2.tar\\build64"
release版本:VC-WIN64A代表是64位release 库;VC-WIN32 代表是32位release库
debug版本:debug VC-WIN64A ; debug VC-WIN32A
no-asm:编译过程中不使用汇编代码加快编译过程。
–prefix=路径指定生成路径

编译动态库:
nmake -f ms\ntdll.mak
编译静态库:
nmake -f ms\nt.mak
测试动态库:
nmake -f ms\ntdll.mak test
测试静态库:
nmake -f ms\nt.mak test
安装动态库:
nmake -f ms\ntdll.mak install
安装静态库:
nmake -f ms\nt.mak install
清除上次动态库的编译,以便重新编译:
nmake -f ms\ntdll.mak clean
清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean


–cross-compile-prefix 交叉编译参数
–prefix=DIR 安装目录设置,make install指令会安装到指定目录。
–debug 使用调试符号和零优化级别构建OpenSSL
–release 在不调试符号的情况下构建OpenSSL。这是默认设置
–libdir=DIR 安装目录树顶部(请参阅–prefix选项)下将安装库的目录的名称。

默认情况下,这是“lib”。

请注意,仅在Windows上,.lib文件将存储在此位置。 dll文件将始终安装到“bin”目录。

–openssldir=DIR OpenSSL配置文件的目录,以及默认证书和密钥存储。

默认设置为:

Unix:/usr/local/ssl

Windows:C:\Program Files\Common Files\SSL或C:\Program Files(x86)\Common
Files\SSLOpen
VMS:SYS$COMMON:[OPENSSL-COMMON]

no-tests 不要构建测试程序或运行任何测试 no-shared 不要创建共享库,只创建静态库。
  1. 生成makefile
    生成makefile,64位:ms\do_win64a ;32为:ms\do_ms
    在这里插入图片描述
  2. nmake -f ms\ntdll.mak(ntdll 代表动态库,nt 代表静态库)
  3. 安装nmake -f ms\ntdll.mak install
  4. 测试nmake -f ms\ntdll.mak test
    在这里插入图片描述将生成的库,放入对应的qt文件位置 E:\qt_5.5\5.5\mingw492_32\bin (我是32位的)在这里插入图片描述
GitHub 加速计划 / ope / openssl
20
1
下载
传输层安全性/安全套接层及其加密库
最近提交(Master分支:3 个月前 )
5b94140b Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Paul Dale <ppzgs1@gmail.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/26462) 3 天前
1dafff06 When a requested parameter has a non-NULL result pointer, and the error isn't simply that the result buffer is too small, don't return a non-zero result size. Returning a non-zero result size that isn't larger than the user's provided space is an indication that a result of that size was actually written, inviting trouble if the error indication was inadvertenly lost. Also, in such cases (wrong type, data can't be converted to the requested type when otherwise supported, ...) there is nothing useful to be done with the return size value, it can't help to address the problem. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Paul Dale <ppzgs1@gmail.com> (Merged from https://github.com/openssl/openssl/pull/26436) 3 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐