我想使用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)?
答案 0 :(得分:1)
你应该试试这个Python-ASN1 encoder and decoder
。适用于Python 2.6+和3.3+。页面上的简短示例:
https://pypi.org/project/asn1/
请务必在pip install future
pip install asn1
答案 1 :(得分:1)
您正在将文件作为文本文件打开,这意味着read
尝试使用UTF-8解码数据,以便返回str
个对象。
相反,请将其作为二进制文件打开,以便read
只返回bytes
对象,而不会尝试解码数据。
der = open('...', 'rb').read()