Qt网络编程:QSslCertificate(SSL证书)
建议阅读:
如何创建一个自签名的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证书)相关推荐
- qt网络编程之使用cookie和ssl
文章目录 所使用的Qt版本:5.14.0 接收Cookies: 发送Cookies: 答案是:有7个(有多少个等号就有多少个cookie,每个cookie用 ; 分隔开来) 代码如下: 参考: 简 述 ...
- [Qt教程] 第31篇 网络(一)Qt网络编程简介
[Qt教程] 第31篇 网络(一)Qt网络编程简介 楼主 发表于 2013-8-28 17:04:17 | 查看: 515| 回复: 0 Qt网络编程简介 版权声明 该文章原创于作者yafeilin ...
- Qt网络编程之实例一GET方式
看了两天的Qt网络编程,其实主要就是看了看QNetworkAccessManager.QNetworkRequest和QNetworkReply这三个类的主要内容.在之前,Qt网络编程主要是使用QHt ...
- qt android 网络编程实例,QT网络编程Tcp下C/S架构的即时通信实例
先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include #include #include # ...
- Qt网络编程——TCP
Qt网络编程--TCP 1. 概念 2. 服务器 3. 客户端 4. TCP服务器和客户端互传文件 5. 资源下载 1. 概念 TCP(Transmission Control Protocol, 传 ...
- Qt网络编程实战之HTTP服务器-安晓辉-专题视频课程
Qt网络编程实战之HTTP服务器-30196人已学习 课程介绍 设计了一个实用的HTTP服务器,基于Qt的网络框架实现.先详细介绍Qt的网络.IO.线程..自定义事件.配置文件等类库的 ...
- Qt网络编程电子白板
Qt网络编程电子白板 2018-08-11 08:44:04 天行健_地势坤 阅读数 915更多 分类专栏: Qt 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...
- 第十四章:Qt网络编程
回顾: 第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽 第五章:Qt容器窗口(父窗口) 第六章:面向对象的Qt编程 第七章:Qt设 ...
- Qt网络编程概述(一)
分享主题 Qt网络编程概述(一) Qt网络编程之QTCPSocket和QTCPServer实例(二) Qt网络编程之QUdpSocket实例(三) Qt网络编程概述 QtNetWork模块提供了若干类 ...
- Qt网络编程-简易版UDP组播通信入门Demo(5)
Qt网络编程-简易版UDP组播通信入门Demo(5)
最新文章
- Android 入门开发
- 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
- c语言数组求逆序对,LeetCode 面试题51. 数组中的逆序对
- deepfake 图片_DeepFake克星来了!简单2步算法,造假图像无处可逃
- 文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落
- 文件手动删除后 同步到git
- 关于Xldown和Xlup的用法(Excel VBA)
- [独家放送]Unity2020规划预览,可视化编程又双叒叕来了!
- 基于 iso 镜像构建 yum 本地源
- 尔雅课堂 美学原理课后练习题库
- 【报告分享】 2020国人旅游出行研究报告-企鹅智库(附下载)
- 学习笔记(16):重叠元素
- 使用ALLHiC基于HiC数据辅助基因组组装
- colorAccent,colorPrimary,colorPrimaryDark做什么的?
- php中 act什么意思,剑网三act是什么意思?详解丐帮act概念
- 从0开始配置云服务器开发环境_艾孜尔江撰
- 深度学习Deep Learning 资料大全
- Java培训完能不能就业?
- RPC实践(二)JsonRPC实践
- 税率方程C语言,高级表格税率加减乘除换算法送给有需要的朋友