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

How do I read(open) an ASN.1 file in python

我想使用 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)?

你应该试试这个 Python-ASN1 encoder and decoder。适用于 Python 2.6+ 和 3.3+。页面上的简短示例:

https://pypi.org/project/asn1/

确保在 pip install asn1

之前安装 pip install future

您正在将文件作为文本文件打开,这意味着 read 尝试使用 UTF-8 解码数据以便 return 一个 str 对象。

相反,将其作为二进制文件打开,这样 read 只需 return 一个 bytes 对象,而根本不会尝试解码数据。

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