目录

基本概念

代码与实例


基本概念

这里要先介绍几个类和函数

首先是QSslSocket:这个类提供了客户端和服务器之间的SSL加密socket连接。这个是基于TCP连接,可以传输加密数据,支持的协议有SSL3和TLS1.2。

通过两种方式建立安全连接,一种是使用即使的SSL握手,一个是延迟SLL握手。

在Qt中只要调用connectToHostEncrypted就可以建立一个安全的连接!

官方代码如下:

  QSslSocket *socket = new QSslSocket(this);connect(socket, SIGNAL(encrypted()), this, SLOT(ready()));socket->connectToHostEncrypted("imap.example.com", 993);

下面再介绍一个类:QSslCipher

QSslCipher:是SSL的加密密码,通常是调用QSslSocket中的sessionCipher这个函数可以得到。

下面最后介绍一个类:QSslCertificate

顾名思义获取X509证书的API。

代码与实例

以百度为例!

程序运行截图如下:

下面来看看百度的证书

程序源码如下:

#include <QCoreApplication>
#include <QSslSocket>
#include <QObject>
#include <QSslCipher>
#include <QSslCertificate>
#include <QList>
#include <QDebug>
#include <QEventLoop>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QSslSocket *socket = new QSslSocket;socket->connectToHostEncrypted("www.baidu.com", 443);QEventLoop loop;QObject::connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit()));loop.exec();//会话的套接字密码qDebug() << "套接字密码:↓";QSslCipher ciph = socket->sessionCipher();if(ciph.isNull()){qDebug() << "没有设置套接字密码,溜了!";return 0;}qDebug() << QString("%1, %2 (%3/%4)").arg(ciph.authenticationMethod()).arg(ciph.name()).arg(ciph.usedBits()).arg(ciph.supportedBits());//获取认证信息qDebug() << "认证信息:↓";const QList<QSslCertificate> chainList = socket->peerCertificateChain();for(int i = 0; i < chainList.size(); i++){qDebug() << QString("%1%2 (%3)").arg(!i ? QString() : ("Issued by: ")).arg(chainList[i].subjectInfo(QSslCertificate::Organization).join(QLatin1Char(' '))).arg(chainList[i].subjectInfo(QSslCertificate::CommonName).join(QLatin1Char(' ')));qDebug() << "--------华丽的分割线--------";}qDebug() << "over";delete socket;return a.exec();
}

Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书相关推荐

  1. Qt文档阅读笔记-Qt跨平台库(Qt基本库)

    Qt基本库是所有Qt平台的基础分.他能在所有支持开发的平台和测试平台上跑.这些库在Qt5中已经保持源代码和二进制的兼容. 基本模块(基本库)被其他特殊模块所附加. 下面是Qt基本模块(基本库)的列表: ...

  2. Qt文档阅读笔记-Qt Core的官方解析

    Qt Core 目录 Getting Started Threading and Concurrent Programming Input/Output, Resources, Containers ...

  3. Qt文档阅读笔记-Qt对象模型及deleteLater()杂记

    最近主要在撸官方的自学包.在此作下简短的笔记: Qt对象模型 Qt包含的1500个类可以分为2类 1. identify types: 2. value types: identify types: ...

  4. Qt文档阅读笔记-Qt Quick 3D - Simple Example解析

    程序运行截图如下: 还是动的. 官方出这篇博文的目的是如何教我们使用Qt Quick 3D去渲染简单的场景. 首先是设置其场景. 在main.qml文件中设置整个场景,导入QtQuick3D组建,用于 ...

  5. Qt文档阅读笔记-Qt单元测试中模拟GUI事件

    这里先提下基本概念 官方的模拟GUI事件,就是调用QTest提供的函数,去模拟用户鼠标点击,用户输入等效果.从而达到模拟的功能,感觉这个功能非常的好. 如: QTest::keyClicks()主要是 ...

  6. Qt文档阅读笔记-Qt Quick Controls - Wearable Demo实例解析

    程序运行截图如下: 这个实例主要是用qml玩界面. main.qml文件以及wearable.qml分别是由ApplicationWindow和StatckView.这个StackView用于做导航相 ...

  7. Qt文档阅读笔记-Qt Quick Examples - Text 初步解析

    目录 Hello Fonts Available Fonts Banner Img Tag Text Layout Hello Hello展示了改变字间距和动态展示.使用连续的动画,font.Lett ...

  8. Qt文档阅读笔记|Qt工作笔记-setupUi官方解析与实例(widgets中界面与业务分离)

    目录 前言 官方解析 模拟界面与业务分离过程 博主栗子 前言 在最开始创建Qt项目的时候,已经默认添加好了,现在来分析下,这么做有什么意义! 官方解析 void QWidget::setupUi(QW ...

  9. Qt文档阅读笔记-Qt工作笔记-QTableWidget::selectedItems()官方解析与实例(如何进行多选)

    目录 前言 官方解析 博主例子 前言 QTableWidget::selectedItems(): 在使用QTableWidget中,可以选中多行,如何从界面获取多行的数据,可以使用selectedI ...

最新文章

  1. PicGo 配置Gitee 图床
  2. Python2安装教程(以最终版本Python2.7.18为例)
  3. pytorch图像和张量的相互转换_如何加载图像并将其转换为PyTorch的适当张量?
  4. openresty开发系列23--lua面向对象
  5. winform实现Echart统计图(基于webBrowser)
  6. python登录代码思路_终于找到一个思路比较清晰的可以模拟登录百度的代码!
  7. angularjs的$on、$emit、$broadcast
  8. jQuery EasyUI datagrid本地分页
  9. 天线的起源与发展历史
  10. LeetCode 1131. 绝对值表达式的最大值(数学 绝对值展开)
  11. impdp导入dmp文件
  12. Android LayoutInflater原理分析,带你一步步深入了解View(一) 郭霖学习摘要
  13. 访问linux端口失败_教你如何配置Linux服务器防火墙端口规则
  14. 为什么要使用namedtuple?
  15. 阿里云获中国互联网网络安全威胁治理联盟特别贡献奖
  16. swift和java_Swift和Java关于字符串和字符的比较
  17. python替换文件中的字符串_Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)...
  18. redis 慢日志查询
  19. PdfSharp库剪裁Pdf页面边缘空白部分
  20. 时间序列频繁模式挖掘:GSP算法、SPADE算法

热门文章

  1. Windows 2008 R2 SP1部署Lync2010企业版(一)
  2. 双非同学,自学编程,毕业一年逆袭百度!
  3. 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
  4. 这说明什么?【转载】早点长大的飞秋2013
  5. 时光老人的飞鸽传书下载
  6. 战线长一点的飞秋实现原理
  7. 飞鸽转载异步操作(二)
  8. 利用C++实现哈夫曼算法
  9. 聊聊 Python 调用 JS 的几种方式,你都知道吗?
  10. mysql 允许用户远程_Mysql 允许用户远程操作