当前位置: 首页 > news >正文

Qt6.7.2中使用OpenSSL的坑

最近编写Qt Quick项目,使用Qt6.7.2版本,CMAKE编译,开始QtCreator运行代码都没有问题,访问https也正常,但打出安装包后一试,发现https访问不了,尴尬!!

查看了相关日志发现:

WARG 16:50:02.340 qt.network.ssl: No functional TLS backend was found
WARG 16:50:02.340 qt.network.ssl: No TLS backend is available
WARG 16:50:02.340 qt.network.ssl: No functional TLS backend was found
WARG 16:50:02.340 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

……

WARG 16:50:02.604 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

网上搜索,发现一大堆人都说是openssl库缺少,安装openssl对应库,然后拷贝两个文件;

libcrypto-3-x64.dll 与 libssl-3-x64.dll对运行目录下即可。具体过程网上一堆,比如用 

QSslSocket::sslLibraryBuildVersionString();

查看当前QT版本支持的openssl库的版本号,用

QSslSocket::supportsSsl(); 查看系统是否支持ssl, 

一开始,在win11上,qt6.7.2调用以上两个接口,返回的是:

secure channel (ntddi: 0xa00000c)   和 true,

这时你自己随意下载个openssl的版本,安装一下,比如openssl3.3.2 ,安装后再去调用,则会返回:"OpenSSL 3.0.7 1 Nov 2022" ---- true

本以后是自己用的openssl版本不一直,导致即使用了两个库libcrypto、libssl也无法访问https,无奈自己又下载opensll3.0.7的源码,编译,一堆操作。但最终,并无鸟用……

奇怪的项目是在QtCreator运行下,判断openssl的两个接口有返回:"OpenSSL 3.0.7 1 Nov 2022" ---- true,但单独点击运行程序运行却没有输出,supportsSsl()返回false;

……其实很简单,这是QT6的一个bug,

Qt 6.2.0 - beta 3 - Qt Network: qt.network.ssl: No functional TLS backend was found | Qt Forum

某些Qt库未拷贝到程序运行目录而已,哪些库呢?就是Qt安装目录下对应的tls下的三个库:

C:\Qt\6.7.2\msvc2019_64\plugins\tls

尤其是qopensslbackend.dll (只要有它就可以访问https了)

所以解决方案就是:

将tls这个目录拷贝到运行程序的目录之下即可。

201

手机版

  • 网页
  • 图片
  • 视频
  • 学术
  • 词典
  • 地图
  • 更多
  • 工具
http://www.lryc.cn/news/469486.html

相关文章:

  • Mybatis-08.基础操作-删除
  • 通过FDM升级Firepower
  • 使用 Kibana 将地理空间数据导入 Elasticsearch 以供 ES|QL 使用
  • demo说明
  • 【c++篇】:从基础到实践--c++内存管理技巧与模版编程基础
  • 如何减小 Maven 项目生成的 JAR 包体积 提升运维效率
  • Python自动化会议记录与摘要生成
  • SwiftUI 中 List 或 Form 子视图关联的 swipeAction 导致展开动画异常的解决
  • Apache Paimon Catalog
  • C++基础:三个字符串也能搞大小?
  • 了解AIGC——自然语言处理与生成
  • Modern CMake 简明教程(8)- 集成Qt
  • 人脸应用实例:性别年龄预测
  • 学习threejs,通过THREE.Raycaster给模型绑定点击事件
  • Jackson Json序列化反序列化的两个坑
  • k8s_Pod健康检查
  • 基于DDPG算法的股票量化交易
  • eIQ笔记(UI介绍+Loss曲线+OpenART例程)
  • 微信小程序——消息订阅
  • 网络原理(传输层)->TCP协议解
  • oracle imp和exp 导入不同库的用户和表空间
  • 滚珠丝杆的精度级别如何分?
  • ComfyUI初体验
  • DPI-C动态库so的使用
  • Java避坑案例 - 高并发场景下的分布式缓存策略
  • Python中的字符串修剪:strip()、lstrip() 和 rstrip()
  • K8S配置storage-class
  • 多线程——线程池
  • VScode插件:前端每日一题
  • Android跨进程通信