Qt之OpenSSL
SSL(Secure Socket Layer)安全套接层是广泛使用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。
当QT使用get/post发送请求时,如果使用了https开头的网页,就需要用到SSL。如果缺少SSL库,则会导致请求发送中断,并提示以下错误:
qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed.
这是由于QT只提供了SSL的静态链接库,而没有提供SSL的动态链接库,解决这个问题首先要知道当前QT支持的SSL库,然后添加相应的SSL库即可。
查看下是否支持SSL:
qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
返回的是false,表示当前没有安装ssl库。
解决办法如下:
首先查看当前QT支持的SSL版本及:
qDebug()<<"QSslSocket支持的版本="<<QSslSocket::sslLibraryBuildVersionString();
点击下面的链接,并下载相应的版本(一般下载Win32 OpenSSL v1.1.1):
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com)
如果发布程序,需要将相应的ssl库添加到发布程序中。