PySide6.QtNetwork.QSslCertificate

class QSslCertificate

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

概要

方法

静态函数

注意

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

详细描述

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

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

你可以调用isNull()来检查你的证书是否为空。默认情况下,QSslCertificate会构造一个空证书。空证书是无效的,但无效的证书不一定是空的。如果你想重置证书中的所有内容,请调用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.RegularExpression

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

QSslCertificate.PatternSyntax.Wildcard

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

QSslCertificate.PatternSyntax.FixedString

模式是一个固定字符串。这相当于在字符串上使用正则表达式模式,其中所有元字符都使用escape()进行转义。这是默认设置。

__init__(other)
Parameters:

其他QSslCertificate

构造一个与other相同的副本。

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

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

__init__([data=QByteArray()[, format=QSsl.Pem]])
Parameters:

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

clear()

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

另请参阅

isNull()

digest([algorithm=QCryptographicHash.Md5])
Parameters:

算法Algorithm

Return type:

QByteArray

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

effectiveDate()
Return type:

QDateTime

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

另请参阅

expiryDate()

expiryDate()
Return type:

QDateTime

返回证书到期的日期时间,如果这是一个空证书,则返回空的 QDateTime。

另请参阅

effectiveDate()

extensions()
Return type:

QSslCertificateExtension 的列表

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

static fromData(data[, format=QSsl.Pem])
Parameters:
Return type:

QSslCertificate的列表

搜索并解析data中所有以指定format编码的证书,并将它们返回为证书列表。

另请参阅

fromDevice()

static fromDevice(device[, format=QSsl.Pem])
Parameters:
Return type:

QSslCertificate的列表

搜索并解析device中所有以指定format编码的证书,并将它们返回为证书列表。

另请参阅

fromData()

static fromPath(path[, format=QSsl.Pem[, syntax=QSslCertificate.PatternSyntax.FixedString]])
Parameters:
Return type:

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()
Return type:

Qt::HANDLE

返回指向本机证书句柄的指针(如果有),否则返回None

您可以使用此句柄,与原生API一起,访问有关证书的扩展信息。

警告

使用此函数很可能不具备可移植性,其返回值可能因平台而异,或在次要版本之间发生变化。

static importPkcs12(device, key, cert[, caCertificates=None[, passPhrase=QByteArray()]])
Parameters:
Return type:

布尔

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

注意

device 必须已打开并准备好进行读取。

isBlacklisted()
Return type:

布尔

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

另请参阅

isNull()

isNull()
Return type:

布尔

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

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

另请参阅

clear()

isSelfSigned()
Return type:

布尔

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

证书被认为是自签名的,如果其颁发者和主题相同。

issuerDisplayName()
Return type:

字符串

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

另请参阅

issuerInfo()

issuerInfo(info)
Parameters:

信息SubjectInfo

Return type:

字符串列表

返回证书中subject的发行者信息,如果证书中没有subject的信息,则返回空列表。每种类型可能有多个条目。

另请参阅

subjectInfo()

issuerInfo(attribute)
Parameters:

属性QByteArray

Return type:

字符串列表

返回证书中attribute的发行者信息,如果证书中没有attribute的信息,则返回一个空列表。一个属性可能有多个条目。

另请参阅

subjectInfo()

issuerInfoAttributes()
Return type:

.list of QByteArray

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

另请参阅

subjectInfo()

__ne__(other)
Parameters:

其他QSslCertificate

Return type:

布尔

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

__eq__(other)
Parameters:

其他QSslCertificate

Return type:

布尔

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

publicKey()
Return type:

QSslKey

返回证书主题的公钥。

serialNumber()
Return type:

QByteArray

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

subjectAlternativeNames()
Return type:

.QMultiMapQSsl.AlternativeNameEntryType,QString

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

如果CommonName的主题信息未定义有效的主机名,或者主题信息名称与对等方的主机名不匹配,则会根据连接的对等方的主机名测试这些名称。

另请参阅

subjectInfo()

subjectDisplayName()
Return type:

字符串

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

另请参阅

subjectInfo()

subjectInfo(info)
Parameters:

信息SubjectInfo

Return type:

字符串列表

返回subject的信息,如果证书中没有subject的信息,则返回一个空列表。每种类型可能有多个条目。

另请参阅

issuerInfo()

subjectInfo(attribute)
Parameters:

属性QByteArray

Return type:

字符串列表

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

另请参阅

issuerInfo()

subjectInfoAttributes()
Return type:

.list of QByteArray

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

另请参阅

subjectInfo()

swap(other)
Parameters:

其他QSslCertificate

将此证书实例与 other 交换。此函数非常快且永远不会失败。

toDer()
Return type:

QByteArray

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

toPem()
Return type:

QByteArray

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

toText()
Return type:

字符串

返回此证书转换为人类可读的文本表示形式。

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

  • hostName – str

Return type:

QSslError的列表

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

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

version()
Return type:

QByteArray

返回证书的版本字符串。