使用QNetwork发起https请求时报错,打印QNetworkReply::NetworkError 错误信息提示 TLS initialization failed
首先查看是否支持TLS
qDebug() << QSslSocket::supportsSsl()
<< QSslSocket::sslLibraryBuildVersionString()
<< QSslSocket::sslLibraryVersionString();
打开OpenSSL的下载页面(
http://slproweb.com/products/Win32OpenSSL.html
),下载对应版本的OpenSSL(可下载Light版)。
-
方案2:把OpenSSL的动态库
libeay32.bll和ssleay32.bll拷贝到执行目录
找到QT的安装目录(..\Qt5.12.0\Tools\mingw730_64\opt\bin)把目录下的的libeay32.bll和ssleay32.bll两个文件复制到exe的同一路径下。
使用QNetwork发起https请求时报错,打印QNetworkReply::NetworkError错误信息提示TLS initialization failed解决方案首先查看是否支持TLSqDebug() << QSslSocket::supportsSsl() << QSslSocket::sslLibraryBuildVersionString() << QSslSocket::sslLibraryVers..
// 查詢Qt支持的版本
bool bSupp =
QSslSocket
::supportsSsl();
QString buildVersion =
QSslSocket
::sslLibraryBuildVersionString();
QString version =
QSslSocket
::sslLibraryVersionString();
qDebug() << bSupp <&l
提示
错
误:qt.network.ssl:
QSslSocket
::startServerEncryption:
TLS
initialization
failed
出问题时的环境: 服务器部署在新windows10,什么环境都莫得。
分析原因: 打眼一看就是openssl没安装出问题的。
直接解决方法:新windows10安装Openssl即可[http://slproweb.com/products/Win32OpenSSL.html] (http://slproweb.com/products/Wi
对于基于QT使用
HTTPS
时出现的问题主要存在如下情况:
qt.network.ssl:
QSslSocket
: cannot call unresolvedfunction SSLv23_client_method
qt.network.ssl:
QSslSocket
: cannot callunresolved function SSL_CTX_new
qt.network.ssl:
QSslSocket
: cannot callunresolved function SSL_library_init
qt.network.ssl:
QSslSocket
::connectToHostEncrypted:
TLS
initialization
failed
1. 首选需要找到缺失的 libea32.dll 和 ssleay32.dll 两个库:
确保 QT 版本 与 libea32.dll 和 ssleay32.dll 库的版本一致,方法如下,查看 QT 依赖版本:
QString N1 =
QSslSocket
::supportsSsl();
QString N2 = QSslSocke
这里要明确一点,HTTP/
HTTPS
是应用层协议,而socket一般指TCP/UDP协议,也就是在传输层中,而IP协议是在网络层中!
这个实例主要是撸socket,然后手动构造HTTP包,完成应用层的功能。
这里使用了C++中的Qt框架
编译出qt.network.ssl:
QSslSocket
::connectToHostEncrypted:
TLS
initialization
failed
错
误
缺少openssl库。下载安装
https
://slproweb.com/products/Win32OpenSSL.html
libcrypto-1_1.dll,libssl-1_1.dll
Qt 使用QNetwork 模块,进行api
请求
时发生
错
误,
错
误信息:qt.network.ssl:
QSslSocket
::connectToHostEncrypted:
TLS
initialization
failed
当你用HTTP形式的时候,会发现没有问题,而使用
HTTPS
时,则会
报
错
。如果对计算机网络有所了解的人,应该大致懂原因。
因为HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。
HTTPS
则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了
最近用到Qt 5.12.11.发送
HTTPS
请求
问题,应用程序提示
TLS
initialization
failed
请求
失败
,上网找了下解决方法。
第一个是去
https
://slproweb.com/products/Win32OpenSSL.html下载,安装,在安装目录拿到libcrypto-1_1-x64.dll和libssl-1_1-x64.dll,放到应用程序下,能正常
请求
,可以程序退出时,竟然
报
错
。
最后解决方法是直接在Qt的安装目录下找到li...
QSslSocket
使用Openssl的问题:
运行qt程序
报
错
如下
qt.network.ssl:
QSslSocket
: cannot resolve CRYPTO_num_locks
qt.network.ssl:
QSslSocket
: cannot resolve CRYPTO_set_id_callback
qt.network.ssl:
QSslSocket
:
指令:scp sourcefile user@192.168.109.133:destdir1、
错
误:ssh:connect to host 192.168.109.133 port 22:Connection refused lostconnection。
在Ubuntu中,默认安装了openssh-client,但没有安装openssh-server,因此需要安装openssh-s
这个
错
误信息是Qt网络库中SSL模块的一个
错
误,意思是
TLS
初始化
失败
。可能的原因包括:
1. 证书验证
失败
:SSL需要验证服务器证书,如果证书无效或者不被信任,就会
初始化
失败
。
2. 协议版本不匹配:SSL支持多个协议版本,如果客户端和服务器端的协议版本不匹配,就会
初始化
失败
。
3. 加密算法不支持:SSL需要使用加密算法来保证通信安全,如果客户端和服务器端支持的加密算法不一致,就会
初始化
失败
。
解决这个问题需要具体分析
错
误日志和代码,找出具体原因并进行相应的调整。