栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Qt Android/Windows/Linux 添加SSL认证【error TLS initialization、qt.network.ssl: QSslSocket: OpenSSL >= 1.】

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt Android/Windows/Linux 添加SSL认证【error TLS initialization、qt.network.ssl: QSslSocket: OpenSSL >= 1.】

文章目录
  • 0 问题
  • 1 解决方法
  • 2 小知识
  • 3 windows下安装
  • 4 Linux下使用

0 问题
  • 1,发现的问题:
    在桌面端测试,发现可以正常post请求,但是在Android端运行时,就发现post请求发出去,也收不到信息。由于在真机上进行测试,不能打QDebug调试信息,于是只能把错误直接打印在控件上。

  • 2,打印出错信息的方法:
    事件:

QNetworkAccessManager* networkAccessManager;
    connect(networkAccessManager, &QNetworkAccessManager::finished,
            this, &MainWindow::replyFinisheded);

接受post请求的槽函数

void MainWindow::replyFinisheded(QNetworkReply *reply){
	ui->label_3->setText("reply error:" + reply->errorString());
}
  • 3, 曝出的异常
error TLS initialization
  • 4,测试是否有用的openSSL版本
qDebug() << QSslSocket::supportsSsl()//是否支持,不支持就说明没有openSSL
         << QSslSocket::sslLibraryBuildVersionString()//运行时需要的版本
         << QSslSocket::sslLibraryVersionString();//可用的版本
1 解决方法
  • 1,下载安装Android的openSSL
    地址
    然后自己导入,也可以选择Download OpenSSL的按钮,自动下载导入。
    安装成功的话,选择全部选项打勾。(如果是windwos的也可以下载windwos版本的、
    openssl官网)

  • 2,打开Qt的项目中,选择Include prebulid openSSL libraries的选项,

    在.pro文件中会自动生成下面代码,也可以手动自己在pro文件中添加代码

android: include(/Users/mac/android-sdk/android_openssl/openssl.pri)

ANDROID_EXTRA_LIBS = /Users/mac/android-sdk/android_openssl/latest/arm/libcrypto_1_1.so /Users/mac/android-sdk/android_openssl/latest/arm/libssl_1_1.so /Users/mac/android-sdk/android_openssl/latest/arm64/libcrypto_1_1.so /Users/mac/android-sdk/android_openssl/latest/arm64/libssl_1_1.so /Users/mac/android-sdk/android_openssl/latest/x86/libcrypto_1_1.so /Users/mac/android-sdk/android_openssl/latest/x86/libssl_1_1.so /Users/mac/android-sdk/android_openssl/latest/x86_64/libcrypto_1_1.so /Users/mac/android-sdk/android_openssl/latest/x86_64/libssl_1_1.so

按下ctr/Command + B后进行编译,会自动生成下面的代码

然后就可以愉快的进行https的请求了。

2 小知识

因为openSSL为开源的加密软件,有些地方涉及这方面需要得到批准,因此Qt并不会自动帮我们链接openSSL程序。

Import and Export Restrictions
Qt binary installers include the OpenSSL 
libraries used by QtNetwork. 
However, those are not automatically deployed with 
applications that are built with Qt. 
Import and export restrictions apply for 
some types of software, and for some parts of the world. 
Developers wishing to use SSL communication in their deployed
 applications should either ensure that their users have the 
 appropriate libraries installed, or they should consult a s
 uitably qualified legal professional to ensure that 
 applications using code from the OpenSSL project are correctly 
 certified for import and export in relevant regions of the world.

参考:https://blog.csdn.net/BadAyase/article/details/103905615?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

3 windows下安装
  • 1 把文件夹中的两个文件拷贝到运行文件exe的目录下,即可
4 Linux下使用

一开是我直接运行程序时,曝出的错误为:

测试使用的代码为:

    qDebug() << "Is SSL Enabled? " << QSslSocket::supportsSsl();
    qDebug() << "SSL Library Build Version (Qt compiled against): " << QSslSocket::sslLibraryBuildVersionString();
    qDebug() << "SSL Library Version String (available locally): " << QSslSocket::sslLibraryVersionString();

解决方法:找到自己Qt安装目录下的ssl库(在Qt的目录下面)

在.pro文件中,引入动态连接库:

LIBS += -L/opt/Qt/Tools/OpenSSL/binary/lib  -lcrypto # -libssl

然后,解决问题,nice!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号