如何在python中读取(打开)ASN.1文件

nzk0hqpo  于 2023-05-23  发布在  Python
关注(0)|答案(3)|浏览(354)

我想用python获取证书序列号:

der = open('/Users/me/MyApp/Payload/codesign0').read()```
cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, der
cert.get_serial_number()

不幸的是,它在第一行失败了:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 1: invalid start byte

如何在Python中读取ASN.1文件格式(DER)?

3gtaxfhh

3gtaxfhh1#

您将文件作为文本文件打开,这意味着read尝试使用UTF-8解码数据以返回str对象。
相反,将其作为二进制文件打开,这样read就可以返回一个bytes对象,而根本不需要对数据进行解码。

der = open('...', 'rb').read()
x8goxv8g

x8goxv8g2#

你应该试试这个Python-ASN1 encoder and decoder。适用于Python 2.6+和3.3+。第页上的简短示例:
https://pypi.org/project/asn1/
确保在pip install asn1之前安装pip install future

yhuiod9q

yhuiod9q3#

PyOpenSSL已被弃用,因此可能需要考虑使用cryptography模块

import cryptography
der = open('/path/tp/file', 'rb').read()
cert = cryptography.x509.load_der_x509_certificate(der)
cert.serial_number

相关问题