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.dll、libssl-1_1-x64.dll文件到工程的exe程序所在路径下。
拷贝完后重新运行程序,至此就可以成功解决“TLS initialization failed”的问题了。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_45998381/article/details/134831746