Qt https TLS initialization failed

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"
        }

参考:
【QSslSocket::supportsSsl()返回false问题解决】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值