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”的问题了。

 

 


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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_45998381/article/details/134831746

posted @ 2024-09-25 16:41  [BORUTO]  阅读(3)  评论(0编辑  收藏  举报