一.HTTP与HTTPS
今天使用Qt的QNetwork模块下载https开头的链接时报错:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed,但是下载http开头的资源却没问题
原因:因为HTTP是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。那么这个报错,就是缺少加密的手段,也就是没有提供对HTTP加密的工具,从而无法进行HTTPS通信。
解决方法:Qt本身是支持ssl的,但是并未自带对应的dll库,首先我们看看当前Qt支持的ssl版本
qDebug()<<QSslSocket::supportsSsl()
<<QSslSocket::sslLibraryBuildVersionString()
<<QSslSocket::sslLibraryVersionString();
supportsSsl():是否支持ssl
sslLibraryBuildVersionString():构建Qt源码时使用的ssl版本
sslLibraryVersionString():当前使用的ssl版本
刚开始我的输出如下
false "OpenSSL 1.1.1m 14 Dec 2021" ""
接下来