QSslSocket::supportsSsl()返回false问题解决

1.问题的提出

今天研究Qt官方自带的有关QSslSocket类用法的例子。该例子存放在Qt安装目录下的

Examples\Qt-XX.XX.XX\network\securesocketclient

其中XX.XX.XX为Qt的版本号,如:5.14.1。在main函数QSslSocket::supportsSsl()返回false,如下:


int main(int argc, char **argv)
{
    Q_INIT_RESOURCE(securesocketclient);

    QApplication app(argc, argv);
    if (!QSslSocket::supportsSsl()) {
        QMessageBox::information(0, "Secure Socket Client",
                                 "This system does not support SSL/TLS.");
        return -1;
    }
   ....// 其它代码略
}

也就是说我本机Windows 11操作系统对SSL不支持。

2.解决方法

在上述代码的第6行代码之前加入如下代码:


qDebug() << "QSslSocket=" << QSslSocket::sslLibraryBuildVersionString();

以便输出当前版本的Qt支持的SSL版本。我当前Qt版本为5.14.1,上述代码输出的SSL信息如下:


QSslSocket= "OpenSSL 1.1.1d  10 Sep 2019"

即SSL版本为1.1.1d,进入到OpenSSL官网Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com) 下载,如下:

根据探测出来的版本在官网下载相应的轻量级的OpenSSL安装即可。

说明:

  • 所谓轻量是指 Light版本,当然你下载不带Light也是可以的,但下载时间较长,安装时占用的硬盘空间比较多。

  • 版本中的d和s无关紧要,不影响,只要版本的数字号一致就行,如:都是1.1.1版本。现实中我Qt版本为5.14.1,探测出的是OPenSSL是1.1.1版本,安装OPenSSL是1.1.1版本是可以的,但安装3.0.7等就不行,QSslSocket::supportsSsl()依然返回false,所以探测出的OPenSSL版本和下载的版本一定要一致才行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值