建议阅读:

如何创建一个自签名的SSL证书(X509)

创建自签名SSL证书

Windows系统生成自签名SSL证书

qt使用https协议获取数据的流程

windows创建自签名SSL证书所需工具

*.csr文件:证书签名请求文件

*.key文件:私钥文件

*.crt文件:证书文件

一、描述

QSslCertificate 存储 X509 证书结构(struct),通常用于验证身份并存储有关本地主机、远程连接的对等方或受信任的第三方证书颁发机构的信息。


二、类型成员

1、enum QSslCertificate::SubjectInfo:描述传递给 issuerInfo() 或 subjectInfo() 以获取有关证书颁发者或主题的信息的密钥。

  • Organization:“O” 组织名称。
  • CommonName:“CN”通用名称; 大多数情况下,这用于存储主机名。
  • LocalityName:“L” 地区。
  • OrganizationalUnitName:“OU” 组织单位名称。
  • CountryName:“C” 国家。
  • StateOrProvinceName:“ST” 州或省。
  • DistinguishedNameQualifier:专有名称限定符
  • SerialNumber:证书的序列号
  • EmailAddress:与证书关联的电子邮件地址


三、成员函数

1、void clear()

清除此证书的内容,使其成为空证书。

2、QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5)

返回此证书的加密摘要。

3、QDateTime effectiveDate()

返回证书生效的日期时间。

4、QDateTime expiryDate()

返回证书过期的日期时间。

5、QList<QSslCertificateExtension> extensions()

返回包含此证书的 X509 扩展名的列表。

6、[static] QList<QSslCertificate> fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem)

在字节数组里解析出证书数据。

QSsl::EncodingFormat:描述证书和密钥支持的编码格式。

  • QSsl::Pem:PEM 格式。
  • QSsl::Der:DER 格式。

7、[static] bool importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray())

从指定设备导入 PKCS#12 (*.pfx) 文件。 PKCS#12 文件可以包含许多证书和密钥。此方法从文件中读取单个密钥、其证书和任何关联的CA证书。 可以指定了 passPhrase(密码)。如果成功加载 PKCS#12 文件,则返回 true。(设备必须打开)

8、bool isBlacklisted()

此证书是否被列入黑名单。

9、bool isSelfSigned()

证书是否是自签名的。颁发者和主题相同则证书被认为是自签名的。

10、QString issuerDisplayName()

返回描述发行者的名称。

11、QStringList issuerInfo(QSslCertificate::SubjectInfo subject)

返回证书中主题的颁发者信息。

12、QStringList issuerInfo(const QByteArray &attribute)

返回证书中属性的颁发者信息。

13、QList<QByteArray> issuerInfoAttributes()

返回在此证书的颁发者信息中具有值的属性列表。

14、QSslKey publicKey()

返回证书主题的公钥。

15、QByteArray serialNumber()

以十六进制格式返回证书的序列号字符串。

16、QMultiMap<QSsl::AlternativeNameEntryType, QString> subjectAlternativeNames()

返回此证书的替代主题名称列表。

17、QString subjectDisplayName()

返回描述主题的名称。

18、QStringList subjectInfo(QSslCertificate::SubjectInfo subject)

返回主题信息。

19、QStringList subjectInfo(const QByteArray &attribute)

返回属性的主题信息。

20、QList<QByteArray> subjectInfoAttributes()

返回在此证书的主题信息中具有值的属性列表。

21、QByteArray toDer()

返回转换为 DER(二进制)编码表示的证书。

22、QByteArray toPem()

返回转换为 PEM (Base64) 编码表示的证书。

23、QString toText()

证书转换为可读的文本。

24、[static] QList<QSslError> verify(QList<QSslCertificate> certificateChain, const QString &hostName = QString())

验证证书链。 要验证的链在 certificateChain 参数中传递。 列表中的第一个证书应该是要验证的链的叶证书。 如果指定了 hostName,则还会检查证书以查看它是否对指定的主机名有效。
请注意,根 (CA) 证书不应包含在要验证的列表中。

25、QByteArray version()

获取证书版本。


四、使用示例

使用上面链接中的方法创建一个证书文件并查看内容(注意:要把ssleay32.dll、libeay32.dll这两个文件复制到程序运行目录):

    QFile crtFile(":/server.crt");qDebug()<<crtFile.open(QIODevice::ReadOnly);QSslCertificate certificate(&crtFile, QSsl::Pem);crtFile.close();qDebug()<<certificate.isNull();qDebug()<<certificate.issuerDisplayName();qDebug()<<certificate.subjectDisplayName();qDebug()<<certificate.version();qDebug()<<certificate.serialNumber();qDebug()<<certificate.issuerInfo(QSslCertificate::Organization);qDebug()<<certificate.issuerInfo(QSslCertificate::CommonName);qDebug()<<certificate.issuerInfo(QSslCertificate::LocalityName);qDebug()<<certificate.issuerInfo(QSslCertificate::OrganizationalUnitName);qDebug()<<certificate.issuerInfo(QSslCertificate::CountryName);qDebug()<<certificate.issuerInfo(QSslCertificate::StateOrProvinceName);qDebug()<<certificate.issuerInfo(QSslCertificate::DistinguishedNameQualifier);qDebug()<<certificate.issuerInfo(QSslCertificate::SerialNumber);qDebug()<<certificate.issuerInfo(QSslCertificate::EmailAddress)<<endl;qDebug()<<certificate.subjectInfo(QSslCertificate::Organization);qDebug()<<certificate.subjectInfo(QSslCertificate::CommonName);qDebug()<<certificate.subjectInfo(QSslCertificate::LocalityName);qDebug()<<certificate.subjectInfo(QSslCertificate::OrganizationalUnitName);qDebug()<<certificate.subjectInfo(QSslCertificate::CountryName);qDebug()<<certificate.subjectInfo(QSslCertificate::StateOrProvinceName);qDebug()<<certificate.subjectInfo(QSslCertificate::DistinguishedNameQualifier);qDebug()<<certificate.subjectInfo(QSslCertificate::SerialNumber);qDebug()<<certificate.subjectInfo(QSslCertificate::EmailAddress)<<endl;qDebug()<<certificate.effectiveDate();qDebug()<<certificate.expiryDate();
//    qDebug()<<certificate.toText()<<endl;qDebug()<<certificate.subjectInfoAttributes();qDebug()<<certificate.issuerInfoAttributes();

Qt网络编程:QSslCertificate(SSL证书)相关推荐

  1. qt网络编程之使用cookie和ssl

    文章目录 所使用的Qt版本:5.14.0 接收Cookies: 发送Cookies: 答案是:有7个(有多少个等号就有多少个cookie,每个cookie用 ; 分隔开来) 代码如下: 参考: 简 述 ...

  2. [Qt教程] 第31篇 网络(一)Qt网络编程简介

    [Qt教程] 第31篇 网络(一)Qt网络编程简介 楼主  发表于 2013-8-28 17:04:17 | 查看: 515| 回复: 0 Qt网络编程简介 版权声明 该文章原创于作者yafeilin ...

  3. Qt网络编程之实例一GET方式

    看了两天的Qt网络编程,其实主要就是看了看QNetworkAccessManager.QNetworkRequest和QNetworkReply这三个类的主要内容.在之前,Qt网络编程主要是使用QHt ...

  4. qt android 网络编程实例,QT网络编程Tcp下C/S架构的即时通信实例

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include #include #include # ...

  5. Qt网络编程——TCP

    Qt网络编程--TCP 1. 概念 2. 服务器 3. 客户端 4. TCP服务器和客户端互传文件 5. 资源下载 1. 概念 TCP(Transmission Control Protocol, 传 ...

  6. Qt网络编程实战之HTTP服务器-安晓辉-专题视频课程

    Qt网络编程实战之HTTP服务器-30196人已学习 课程介绍         设计了一个实用的HTTP服务器,基于Qt的网络框架实现.先详细介绍Qt的网络.IO.线程..自定义事件.配置文件等类库的 ...

  7. Qt网络编程电子白板

    Qt网络编程电子白板 2018-08-11 08:44:04 天行健_地势坤 阅读数 915更多 分类专栏: Qt 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  8. 第十四章:Qt网络编程

    回顾: 第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽 第五章:Qt容器窗口(父窗口) 第六章:面向对象的Qt编程 第七章:Qt设 ...

  9. Qt网络编程概述(一)

    分享主题 Qt网络编程概述(一) Qt网络编程之QTCPSocket和QTCPServer实例(二) Qt网络编程之QUdpSocket实例(三) Qt网络编程概述 QtNetWork模块提供了若干类 ...

  10. Qt网络编程-简易版UDP组播通信入门Demo(5)

    Qt网络编程-简易版UDP组播通信入门Demo(5)

最新文章

  1. Android 入门开发
  2. 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
  3. c语言数组求逆序对,LeetCode 面试题51. 数组中的逆序对
  4. deepfake 图片_DeepFake克星来了!简单2步算法,造假图像无处可逃
  5. 文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落
  6. 文件手动删除后 同步到git
  7. 关于Xldown和Xlup的用法(Excel VBA)
  8. [独家放送]Unity2020规划预览,可视化编程又双叒叕来了!
  9. 基于 iso 镜像构建 yum 本地源
  10. 尔雅课堂 美学原理课后练习题库
  11. 【报告分享】 2020国人旅游出行研究报告-企鹅智库(附下载)
  12. 学习笔记(16):重叠元素
  13. 使用ALLHiC基于HiC数据辅助基因组组装
  14. colorAccent,colorPrimary,colorPrimaryDark做什么的?
  15. php中 act什么意思,剑网三act是什么意思?详解丐帮act概念
  16. 从0开始配置云服务器开发环境_艾孜尔江撰
  17. 深度学习Deep Learning 资料大全
  18. Java培训完能不能就业?
  19. RPC实践(二)JsonRPC实践
  20. 税率方程C语言,高级表格税率加减乘除换算法送给有需要的朋友

热门文章

  1. qml自学笔记------自己写类似于劲舞团的按键小游戏(上)
  2. 如何下载TMS离线地图瓦片数据
  3. link标签 a标签总结
  4. ARM:嵌入式系统之硬件总复习
  5. 【CodingNoBorder - 15】无际软工队 - 求职岛:BETA 阶段事后分析
  6. 金仓数据库KingbaseES物理备份恢复最佳实践(数据恢复解决方案)
  7. evo评估数据集与关键帧
  8. AndroidT(13) Log 系统 -- C plus plus 语言格式的LOG输出(二)
  9. 有关 车牌识别(一、原理)
  10. 使用selenium操作PhantomJS的常用操作