正在使用带有x509的x509包。我想在.der文件中找到特定的值。打开该文件并读取(),然后:
mycert = x509.Certificate.load(data)这将返回一个asn1crypto.x509.Certificate类型的对象,类似于so b'0\x81\x50\...'。在调试中,可以扩展mycert以显示各种键和值,但是我想直接在“mycert”中搜索这些键/值。我该怎么做?
编辑:
不必使用asn1crypto包,可以使用另一个包。
编辑:
扩展代码:
with open(cert_path, 'rb') as cert_file:
data = cert_file.read()
mycert = x509.Certificate.load(data)
a = mycert.native # doesn't work!发布于 2022-09-05 07:39:32
在asn1crypto.x509中,属性native包含证书的本机Python表示。这些值是分层结构的,也可以是OrderedDicts:
import asn1crypto.x509 as x509
import pprint
with open('crt.der', mode='rb') as file:
data = file.read()
mycert = x509.Certificate.load(data)
pprint.pprint(mycert.native)输出:
OrderedDict([('tbs_certificate',
OrderedDict([('version', 'v3'),
('serial_number', 15158908894724103801),
('signature',
OrderedDict([('algorithm', 'sha256_rsa'),
('parameters', None)])),
('issuer',
OrderedDict([('country_name', 'XX'),
('state_or_province_name',
'Some-State'),
('locality_name', 'Some-City'),
('organization_name', 'example ltd'),
('common_name', 'www.example.com'),
('email_address',
'info@example.com')])),
('validity',
OrderedDict([('not_before',
datetime.datetime(2022, 9, 5, 6, 58, 21, tzinfo=datetime.timezone.utc)),
('not_after',
datetime.datetime(2022, 10, 5, 6, 58, 21, tzinfo=datetime.timezone.utc))])),
('subject',
OrderedDict([('country_name', 'XX'),
('state_or_province_name',
'Some-State'),
('locality_name', 'Some-City'),
('organization_name', 'example ltd'),
('common_name', 'www.example.com'),
('email_address',
'info@example.com')])),
...您可以找到关于如何在嵌套的dict (如"Find all occurrences of a key in nested dictionaries and lists“)中搜索的讨论。
https://stackoverflow.com/questions/73539849
复制相似问题