如何在Python中提取并存储X509证书的Issuer CN值
提取证书Issuer中的CommonName值
嘿,刚接触Python和cryptography库的话,确实会对这种结构化的证书属性有点摸不着头脑,我来一步步教你怎么从cert_issuer里取出commonName的值~
首先,你要知道cert_issuer是一个x509.Name对象,它里面包含了一组证书颁发者的属性条目(比如国家、组织、通用名称这些)。每个条目都是x509.NameAttribute类型,包含属性类型(OID)和对应的值。
方法一:遍历属性条目查找
这种方式比较直观,适合刚上手理解结构:
from cryptography.x509.oid import NameOID # 初始化变量存储commonName common_name = None # 遍历issuer的所有属性条目 for attr in cert_issuer: # 判断当前属性是否是CommonName if attr.oid == NameOID.COMMON_NAME: common_name = attr.value break # 找到后就退出循环 # 验证结果 if common_name: print(f"颁发者的通用名称是:{common_name}") else: print("颁发者信息中没有找到通用名称(CommonName)")
方法二:直接通过OID获取属性(更简洁)
cryptography库提供了直接根据属性OID查找的方法,效率更高:
from cryptography.x509.oid import NameOID # 根据CommonName的OID获取对应的属性列表 common_name_attrs = cert_issuer.get_attributes_for_oid(NameOID.COMMON_NAME) # 因为一个颁发者一般只有一个CommonName,所以取列表第一个元素的值 if common_name_attrs: common_name = common_name_attrs[0].value else: common_name = None
小提示
- 必须导入
NameOID,它定义了所有证书属性对应的标准OID,COMMON_NAME就是对应commonName的标识。 attr.value返回的是字符串类型,可以直接赋值给变量或者用于后续操作。
内容的提问来源于stack exchange,提问作者Achal Sharma
相关产品推荐
相关产品推荐

