class QSslCertificate#

QSslCertificate 类提供了一个方便的 API 来处理 X509 证书。 更多

概要#

方法#

静态函数#

注意

这份文档可能包含自动从C++转换为Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译中有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告诉我们。

详细描述#

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

构建 QSslCertificate 有许多方式。最常见的方法是调用 peerCertificate() ,它返回一个 QSslCertificate 对象,或 peerCertificateChain() ,它返回一个包含它们的列表。您还可以从DER(二进制)或PEM(Base64)编码的捆绑包中加载证书,通常存储为一个或多个本地文件,或在Qt资源中。

您可以通过调用 isNull() 来检查您的证书是否为null。默认情况下,QSslCertificate 生成一个null证书。null证书是无效的,但无效的证书不一定是null。如果您想重置证书中的所有内容,请调用 clear()

在加载证书后,您可以通过调用许多访问器函数之一,包括 version()serialNumber()issuerInfo()subjectInfo() ,来获取证书信息、主题和发行者信息。您可以通过调用 effectiveDate()expiryDate() 来检查证书何时开始生效以及何时过期。函数 publicKey() 返回证书主题的公钥作为 QSslKey 。您可以通过调用 issuerInfo()subjectInfo() 来获取证书发行者和主题的详细信息。

内部,QSslCertificate 被存储为 X509 结构。您可以通过调用 handle() 来访问此句柄,但结果可能不可移植。

class SubjectInfo#

描述您可以传递给 issuerInfo()subjectInfo() 来获取证书发行者或主题信息的键。

常量

描述

QSslCertificate.Organization

“O” 组织的名称。

QSslCertificate.CommonName

“CN” 通用名称;通常用于存储主机名。

QSslCertificate.LocalityName

“L” 当地。

QSslCertificate.OrganizationalUnitName

“OU” 组织单元名称。

QSslCertificate.CountryName

“C” 国家。

QSslCertificate.StateOrProvinceName

“ST” 所在州或省份。

QSslCertificate.DistinguishedNameQualifier

共有名称限定符

QSslCertificate.SerialNumber

证书的序列号

QSslCertificate.EmailAddress

与证书关联的电子邮件地址

class PatternSyntax#

用于解释模式意义所使用的语法。

常量

描述

QSslCertificate.PatternSyntax.Regex

类似于Perl的丰富模式匹配语法。

QSslCertificate.PatternSyntax.Wildcard

这提供了一种类似于shell(命令解释器)用于“文件通配符”的简单模式匹配语法。参见 QRegularExpression::fromWildcard().

QSslCertificate.PatternSyntax.FixedString

模式是一个固定字符串。这等效于使用 RegularExpression 模式在所有元字符都通过 escape() 转义后的字符串上。这是默认值。

__init__([data=QByteArray()[, format=QSsl.Pem]])#
参数::

通过解析 format 编码的数据并使用找到的第一个证书来构建 QSslCertificate 对象。您可以稍后调用 isNull() 来查看 data 是否包含证书,以及此证书是否已成功加载。

__init__(device[, format=QSsl.Pem])
参数::

device 中读取 format 编码的数据来构建 QSslCertificate 对象,并使用找到的第一个证书。您可以稍后调用 isNull() 来查看 device 是否包含证书,以及此证书是否已成功加载。

__init__(other)
参数::

otherQSslCertificate

构建与 other 相同的副本。

clear()#

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

另请参阅

isNull()

digest([algorithm=QCryptographicHash.Md5])#
参数::

algorithmAlgorithm

返回类型:

QByteArray

返回此证书的加密摘要。默认情况下,将生成MD5摘要,但也可以指定自定义 algorithm

effectiveDate()#
返回类型:

QDateTime

返回证书生效的日期和时间,如果是空证书则返回空的QDateTime。

另请参阅

expiryDate()

expiryDate()#
返回类型:

QDateTime

返回证书失效的日期和时间,如果是空证书则返回空的QDateTime。

另请参阅

effectiveDate()

extensions()#
返回类型:

.list of QSslCertificateExtension

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

static fromData(data[, format=QSsl.Pem])#
参数::
返回类型:

.list of QSslCertificate

data 中查找并解析所有使用指定的 format 编码的证书,并以证书列表的形式返回。

另请参阅

fromDevice()

static fromDevice(device[, format=QSsl.Pem])#
参数::
返回类型:

.list of QSslCertificate

device 中查找并解析所有使用指定的 format 编码的证书,并以证书列表的形式返回。

另请参阅

fromData()

static fromPath(path[, format=QSsl.Pem[, syntax=QSslCertificate.PatternSyntax.FixedString]])#
参数::
返回类型:

.list of QSslCertificate

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

该功能在指定的 path 中搜索以特定 format 编码的证书,并以列表形式返回。 path 必须是一个文件或与一个或多个文件匹配的模式,具体请参考 syntax

示例

certs = QSslCertificate.fromPath("C:/ssl/certificate.*.pem",()
                                             QSsl.Pem, QSslCertificate.Wildcard)
for cert in certs:
    print(cert.issuerInfo(QSslCertificate.Organization))

另请参阅

fromData()

handle()#
返回类型:

Qt::HANDLE

如果存在本地证书句柄,则返回其指针,否则返回 None

您可以使用此句柄结合本地API访问证书的扩展信息。

警告

使用此函数很可能不具备可移植性,并且其返回值可能会因平台而异,或从次版本变动到次版本。

static importPkcs12(device, key, cert[, caCertificates=None[, passPhrase=QByteArray()]])#
参数::
返回类型:

bool

从指定的 device 导入PKCS#12(pfx)文件。PKCS#12文件是一个可以包含多个证书和密钥的集合。该方法从集合中读取单个 key、其 certificate 和任何相关的 caCertificates。如果指定了 passPhrase,则将使用该密语来解密集合。成功加载PKCS#12文件则返回 true

注意

必须打开并准备好读取的 device

isBlacklisted()#
返回类型:

bool

如果此证书被列入黑名单,则返回 true;否则返回 false

另请参阅

isNull()

isNull()#
返回类型:

bool

如果是空证书(即,没有内容的证书),则返回 true;否则返回 false

默认情况下,QSslCertificate 构造一个空证书。

另请参阅

clear()

isSelfSigned()#
返回类型:

bool

如果此证书是自签名的,则返回 true;否则返回 false

如果证书的发放者和主题相同,则认为它是自签名的。

issuerDisplayName()#
返回类型:

str

返回描述发放者的名称。如果有可用的 CommonName,则返回该名称;否则将退回到第一个 Organization 或第一个 OrganizationalUnitName

另请参阅

issuerInfo()

issuerInfo(info)#
参数::

infoSubjectInfo

返回类型:

字符串列表

从证书中返回 subject 的发放者信息,如果没有证书中有关于 subject 的信息,则返回空列表。可以有多种类型的数据条目。

另请参阅

subjectInfo()

issuerInfo(attribute)
参数::

attributeQByteArray

返回类型:

字符串列表

从证书中返回 attribute 的发放者信息,如果没有关于 attribute 的信息,则返回空列表。可以有一个或多个属性条目。

另请参阅

subjectInfo()

issuerInfoAttributes()#
返回类型:

QByteArray 列表

返回具有此证书发放者信息值的属性列表。可以使用 issuerInfo() 方法访问与给定属性关联的信息。请注意,此列表可能包含 SSL 后端不知道的任何元素的 OIDs。

另请参阅

subjectInfo()

__ne__(other)#
参数::

otherQSslCertificate

返回类型:

bool

如果此证书与 other 不同,则返回 true;否则返回 false

__eq__(other)#
参数::

otherQSslCertificate

返回类型:

bool

如果此证书与other相同则返回true;否则返回false

publicKey()#
返回类型:

QSslKey

返回证书主体的公钥。

serialNumber()#
返回类型:

QByteArray

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

subjectAlternativeNames()#
返回类型:

.QMultiMapQSsl.AlternativeNameEntryType,QString

返回此证书的备用主题名称列表。备用名称通常包含主机名,可以带有通配符,对于此证书是有效的。

这些名称将与连接的对端主机名进行测试,如果主题信息中CommonName未定义有效的宿主名,或者主题信息名称与对端主机名不匹配。

另请参阅

subjectInfo()

subjectDisplayName()#
返回类型:

str

返回描述主体的名称。如果可用则返回CommonName,否则回退到第一个Organization或第一个OrganizationalUnitName

另请参阅

subjectInfo()

subjectInfo(info)#
参数::

infoSubjectInfo

返回类型:

字符串列表

返回关于subject的信息,如果没有关于subject的信息,则返回空列表。可以存在多个每种类型条目。

另请参阅

issuerInfo()

subjectInfo(attribute)
参数::

attributeQByteArray

返回类型:

字符串列表

返回关于attribute的主题信息,如果没有关于attribute的信息,则返回空列表。一个属性可以有多个条目。

另请参阅

issuerInfo()

subjectInfoAttributes()#
返回类型:

QByteArray 列表

返回此证书主题信息中的值的属性列表。可以使用subjectInfo()方法访问与特定属性相关联的信息。请注意,此列表可能包括SSL后端不知道的任何元素的OIDs。

另请参阅

subjectInfo()

swap(other)#
参数::

otherQSslCertificate

交换此证书实例与 other。此函数非常快速且从不失败。

toDer()#
返回类型:

QByteArray

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

toPem()#
返回类型:

QByteArray

返回转换成PEM(Base64)编码的证书。

toText()#
返回类型:

str

以人类可读文本形式返回证书。

static verify(certificateChain[, hostName=""])#
参数::
  • certificateChain – QSslCertificate的列表

  • hostName – str

返回类型:

QSslError的列表

验证证书链。要验证的链通过 certificateChain 参数传递。列表中的第一个证书应是要验证的链中的叶证书。如果指定了 hostName,则还会检查证书是否对指定的主机名有效。

请注意,不应将根(CA)证书包含在要验证的列表中,这将会使用默认的 QSslConfiguration 中指定的CA列表自动查询,以及在Unix和Windows上可能的按需加载的CA证书。

version()#
返回类型:

QByteArray

返回证书的版本字符串。