Qt 之 SSL

简述

   传输层安全性协议(Transport Layer Security,缩写:TLS)

**(Secure Sockets Layer)缩写:SSL,**是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器-网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。在浏览器、电子邮件、即时通信、网络传真等应用程序中,广泛支持这个协议。主要的网站,如Google、Facebook等也以这个协议来创建安全连线,发送数据。当前已成为互联网上保密通信的工业标准。
SSL有多种实现,其中OpenSSL是其开源实现。

问题

使用QNetworkAccessManager报错: qt.network.ssl:QSslSocket::connectToHostEncrypted: TLS initialization faile
提示TLS初始化失败,即本地主机缺少SSL功能

定位

**输出当前Qt支持的openSSL版本 **
qDebug()<<“QSslSocket=”<<QSslSocket::sslLibraryBuildVersionString();
必须让自己所用的Qt版本与该版本支持的Openssl一致

判断系统是否支持OpenSSL
qDebug() << “OpenSSL支持情况:” << QSslSocket::supportsSsl();
如果此平台支持SSL,则返回true; 否则,返回false。 如果平台不支持SSL,则套接字将在连接阶段失败。不支持就需要看下面的解决方法。

解决

安装Openssl,下载地址
windows下
根据自己使用的QT编译器时32位还是64位,下载对应安装包。将下载的安装包进行安装,安装到第二个选项时,选择安装到指定的/bin目录下安装之后,找到安装目录下的两个文件(libcrypto-1_1.dll 和libssl-1_1.dll),拷贝到QT编译器目录下即可(C:\Qt\Qt5.12.6\5.12.6\mingw73_32\bin)。

linux下

  1. 下载
    下载对应 tar包,https://www.openssl.org/source/openssl-1.0.2o.tar.gz

  2. 编译
    ./config enable-shared
    make depend
    make -j4

  3. Copy编译结果到qt安装目录 $QTDIR/lib, 我的目录是/opt/Qt5.7.0/5.7/gcc_64/lib/

eg : sudo cp libcrypto.so libssl.so libcrypto.so.1.0.0 libssl.so.1.0.0 /opt/Qt5.7.0/5.7/gcc_64/lib/

扩展

  1. SSL中涉及到一个概念:非对称加密
  2. QSslSocket认证问题
  3. Qt WebEngine实现与服务端的Https双向认证
  4. 百度百科TLS
  5. 百度百科SSL
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值