Qt - 安装openssl库

解决:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

   最近使用https给服务器发送请求的时候发现出现了“qt.network.ssl:QSslSocket::connectToHostEncrypted: TLS initialization failed”错误,搞了好久,也算是吃一堑长一智。

使用Qt的network模块的时候,正常情况下没问题,但是如果要使用https的时候,就会用到openssl库,需要使用SSL/TLS加密方式,如果缺少对应的库就会报“qt.network.ssl:QSslSocket::connectToHostEncrypted: TLS initialization failed”错误。

PS:本文解决方案只适用Windows系统

 

第一步:下载openssl

下载链接:https://slproweb.com/products/Win32OpenSSL.html

进入下载页面后大概是这样的:

不要盲目选择高版本!!!

Qt本身是支持ssl的,但是因为法律原因?没有自带对应的dll。

我们先使用这段代码打印当前Qt支持的ssl版本: 

#include <QSslSocket>
#include <QDebug>
qDebug()<< QSslSocket::sslLibraryBuildVersionString();

使用网络需要加上Qt的网络模块,在pro文件里加上: 

QT += network

我这里输出的是

那个1.1.1就是你的Qt使用的openssl的版本,在下载页面找到对应的版本,选择你的应用程序的对应位数下载、安装。

 

安装openssl

安装的时候,我选择的是第二个,这样可以方便的进行dll文件的拷贝。

 

第二步:拷库

安装完成后在openssl的路径下找到bin目录,拷贝这两个库到你的应用程序执行路径下(或者拷贝到Qt的对应编译路径下,例如msvc2017/bin/,这样之后你所有的Qt类似工程都可以使用SSL/TLS,但是编译打包的时候记得带着这俩库):

拷贝libcrypto-1_1-x64.dlllibssl-1_1-x64.dll文件到工程的exe程序所在路径下。

拷贝完后重新运行程序,至此就可以成功解决“TLS initialization failed”的问题了。

 

 



————————————————————————————————

下载openssl项目源码:https://blog.51cto.com/fish/5935049

————————————————————————————————

posted @   [BORUTO]  阅读(651)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示