Qt https TLS initialization failed
2.到http://slproweb.com/products/Win32OpenSSL.html这里下载,安装。然后拷贝库文件(但是我直接安装完就可以了,安装时勾选复制到系统目录)。1.直接从QtCreator里面拷贝libssl和libcrypto两个文件,到Qt的bin路径下;注意此时QtCreator的库是32bit的,64位的只能用第二种方式。需要注意的是,假如把这两个文件拷贝到Qt的b
1.问题
在使用QNetworkAccessManager 访问 https 时,可能会出现下面的错误
QSslSocket::connectToHostEncrypted: TLS initialization failed
2.解决办法
2.1.确定所需的ssl库版本
先确定当前Qt版本使用的是那个版本的ssl,在你的程序中加这一句。并运行
qDebug() << "ssl" << QSslSocket::sslLibraryBuildVersionString() << QSslSocket::supportsSsl();
假如得到的输出为
ssl "OpenSSL 1.1.1g 21 Apr 2020" true
那么,我们就该下载1.1.1版本的ssl库了。
2.2.下载所需的ssl库版本
到【The Win32/Win64 OpenSSL Installation】这里下载对应的版本安装 (假如没有你需要的版本,请看第3节)。 然后拷贝库文件(但是我直接安装完就可以了,安装时勾选复制到系统目录)。
需要注意的是,假如安装时勾选复制到系统目录,是对本地所有程序生效。
假如想方便管理或者只对当前的项目生效,则需要把这两个文件拷贝到编译出来的exe同级文件夹下,如下图所示:
在我们把程序发布给客户时,也要把这两个库放到exe文件夹中一起给客户。
3.下载指定版本ssl库文件
假如你打开这个【The Win32/Win64 OpenSSL Installation】,大概率是找不到1.1.1的下载链接,现在上面显示的都是最新版的了。
假如想下载之前的版本,也是有办法的。还是这个网页,点这里。
然后再点这里
在这里面搜一下,就可以找到你所需要的版本了
"Win64OpenSSL_Light-1_1_1w.msi": {
"basever": "1.1.1",
"subver": "w",
"arch": "INTEL",
"bits": 64,
"light": true,
"installer": "msi",
"url": "https://slproweb.com/download/Win64OpenSSL_Light-1_1_1w.msi",
"size": 3952640,
"md5": "a75000b3334fa2f992efa57187945290",
"sha1": "8181019f2742795858d89566007e62705851a493",
"sha256": "62002f95fcaf5b68dcb4dd950b352f06962634794aa42c9be4b581ec0b78f763",
"sha512": "89697af24af98247dc58698c5b23711c9e7a133eb984a5292b88db318998d62946286b859e299614aefc98857a45f5f24cfcfb67ce10c959ff06a6eb7c478cdc"
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)