首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asn1证书中搜索某些值

在asn1证书中搜索某些值
EN

Stack Overflow用户
提问于 2022-08-30 09:08:56
回答 1查看 122关注 0票数 3

正在使用带有x509的x509包。我想在.der文件中找到特定的值。打开该文件并读取(),然后:

代码语言:javascript
复制
mycert = x509.Certificate.load(data)

这将返回一个asn1crypto.x509.Certificate类型的对象,类似于so b'0\x81\x50\...'。在调试中,可以扩展mycert以显示各种键和值,但是我想直接在“mycert”中搜索这些键/值。我该怎么做?

编辑:

不必使用asn1crypto包,可以使用另一个包。

编辑:

扩展代码:

代码语言:javascript
复制
with open(cert_path, 'rb') as cert_file:
    data = cert_file.read()

mycert = x509.Certificate.load(data)

a = mycert.native # doesn't work!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-05 07:39:32

asn1crypto.x509中,属性native包含证书的本机Python表示。这些值是分层结构的,也可以是OrderedDicts:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
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“)中搜索的讨论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73539849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档