Python:将X509证书的Issuer CN值存储为字符串

问题描述

我正在使用以下代码

from cryptography import x509
from cryptography.hazmat.backends import default_backend
cert_info = x509.load_pem_x509_certificate(cert_pem,default_backend())
cert_issuer = cert_info.issuer

在PyCharm中进行调试时,我看到cert_issuer变量如下:

cert_issuer

我想将commonName值存储在变量中。 (上面突出显示的值)

我对Python还是很陌生,无法使用这些类型的变量查找任何内容,有人可以指导我将值存储在变量中的语法是什么。

解决方法

发行人的通用名称(CN)可以如下确定:

...
from cryptography.x509.oid import NameOID
cn = cert_info.issuer.get_attributes_for_oid(NameOID.COMMON_NAME)[0].value
...

cryptography.x509.Certificate#issuer返回包含属性列表的cryptography.x509.Name对象。可以使用get_attributes_for_oid(oid)访问此列表的特定属性,其中必须使用来自cryptography.x509.oid.NameOID的OID来指定属性名称,例如COMMON_NAMEget_attributes_for_oid(oid)返回cryptography.x509.NameAttributes对象的列表。由于只有一个 Issuer ,因此必须使用第一个NameAttribute对象,可以使用value来查询其值。