Python X509证书问题:异常:解析asn1值时出错:ParseError

问题描述 投票:0回答:2

更新我的 Python 版本和加密库后,我在加载 X509 证书时看到一个新错误(对我来说)。搜索时我发现了#6386,它看起来很相似。我希望熟悉 ASN.1 的人可能会导致此问题,如果是这种情况,请提供一些关于我需要加载哪个版本的库来纠正此问题的建议。

我看到的完整异常是: ValueError: 解析 asn1 值时出错: ParseError { kind: EncodedDefault, location: ["RawCertificate::tbs_cert", "TbsCertificate::extensions", "2", "Extension::ritic"] }

我的最终目标是加载包含公钥的证书,然后使用该密钥来验证附加到二进制文件的签名。因为这只是一个公钥,所以我将发布(附加)一个我整理的示例脚本,该脚本显示了我所看到的这个问题。完整的“验证”脚本之前可以在 Python 3.8.1(我相信)和早期的加密库(版本未记录/未知)下运行。早期的配置能够加载使用 SHA256 和 SHA512 哈希创建的签名,并使用与这些签名配套的适当证书。当前配置适用于 SHA256 签名,但无法加载与 SHA512 哈希关联的证书。该示例包含失败证书的公共部分。

我正在使用 Python 3.10.6 的 Windows 10 Enterprise V21H2 上运行,但在 3.9.13 和 3.8.10 上都出现了同样的故障。所有这些版本都使用加密库版本 37.0.4。

C:>python --版本 Python 3.10.6 C:>点列表 套装版本

cffi 1.15.1 密码学37.0.4 枕头9.2.0 点 22.2.2 pyc解析器2.21 安装工具 65.0.1 六 1.16.0

示例脚本:

''' certRawData = """-----开始证书----- MIIFVzCCAz+gAwIBAgIEYfgE3jANBgkqhkiG9w0BAQ0FADBPMSMwIQYDVQQKExpI ZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZTEoMCYGA1UEAxMfSFBFIEFsbGVydGEg NDA5Ni1iaXQgULNBIDIwMjEtMTAeFw0yMTEyMDEwMDAwMDBaFw0zNjEyMDIwMDAw MDBaME8xIzAhBgNVBAoTGkhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlMSgwJgYD VQQDEx9IUEUgQWxsZXJ0YSA0MDk2LWJpdCBSU0EgMjAyMS0xMIICIjANBgkqhkiG 9w0BAQEFAAOCAg8AMIICCgKCAgEAl5tDLch9CBx8ZRmCkk8Acau+wX4et3pzOjXX RxJAMnsakHNgt1c1AsP9iAxf1DPDClvLhsOJ6AV75LbrzX07bpNaBjIDTctI96Iv 嘿FotuNGtwBsQJqp1b9hbZ1qm9OxvY+uEQi3eRHVQbuk5xe3mr7706ORNBNkMhh ovKkfa+2G6/sl9gZ96PFTmXybYBl/O5PqK61xz9XQ11t7p55kCT8DErILtrLKsYX RKlvvWcJ6oZgUCcUpuGeC5pilfLdWxQ4Vfi6Veu13pOW1UrqVwihwTvN8LLsQ6mb tRT9/Iiowe6mXqXhCyoCfQhw8Y/nUbIJol96+MZepEH6dhpu1zVfKuNivMnTPLOa nTK9xFgsgSxEER/4E0ZV9GaW/9jda6CqJpdKXY4KVJIUVk36b5f9Si2SsOEfOmM7 /h0mpRV2vKCJ0mvWAGqiG7pJWB+lMq+Cr8DZCjc0t/eF996a5aqO/DcrD6WcM/+S SaENeWpHjhxNd3sqwAolFjdtFIVWKho4qE5TjXtKEMg0D3GntEKj+t41fHr4cLpC XQ3hOVfncdSD4nAPno0yXUwFOeplfInMGgX9zvizRoUykbbCXXxjc9XaeKO5dYmP TG8hoJ9x8XPnaVEoeWmpG0Yr7lzsaGn30Ysoqppz2TWbATKQLAsicavinqRxZ5bs ULSHRY8CAwEAAaM7MDkwDgYDVR0PAQH/BAQDAgeAMA8GA1UdEweb/wQFMAMBAQAw FgYDVR0lAQEABAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQENBQADggIBAARMeFl0 vRxjJDQx5jupZ+I9+VY0i+jvJn/id37OqyEZwJH/prPUEMfp3eXrbZNESEKy2UaM ZCP0CwucR+2LnJRcThib2fFj/UE4u2dEI9THYyj8GaITPfClQ91Mgi1OhjLvOQ8K HOUGeZVL5jsqo9qbgiA2UnHKRuofppYVTQQPd7v0atQ+3fNLqVyQUuS/TKYlPdOO 6+oeMIT4cOkQrQYnpzaWDyt6GOKLcBrkTRpFSS+QA1BOw2xx0Z7ovbQSOZ37VJ78 tNSqsflpQhvSvcHLja5TE5MxtXKdSWcp3JxpRRb7winioZnVZBHsH6dhVO4Lpq71 zW5CkG65StP+cJGnR50KZzbo0K6nlMwe0AVc5zoBfZEp09ux1SM869IY1snbHkKi 4FBE6wjG5QLDACqqOzEuSbMpLI0Eqb6ix2/BAZUTIGNMQRJuLt/taH2mcX0f4QR9 8Vo2kx+35Wenk3Avi+QL5J3b9M7EX8EkSD/Fgj9tdXaxDe+QVCeV3TVdKQKp9isR N4RD8Es4VLCpfQOgpZQjXx513xXbKNi4I7Kk6+Vwp59uQRNrtRbz0QVZ6KB3RJiI dm89xAjpU5Lr/1Ws6IHd8Zo1tUwe5LlzqHatykzk3slb5QjODZhOc0DoUgmeDJjO ENf8/LeTUQGuKbiLT1e5YIVT+GUjN4Eh3XvD -----证书结束----- ”“”

from cryptography.hazmat.backends import default_backend
from cryptography.x509 import load_pem_x509_certificate

load_pem_x509_certificate(certRawData.encode(), default_backend())
print "Certificate load successful."

'''

python-3.x x509certificate python-cryptography
2个回答
0
投票

我在使用加密模块解析某些证书时遇到了类似的错误。返回旧版本的加密包(版本 3.4.8)解决了我的错误。


0
投票

从 snmp 通知程序向客户端服务器发送陷阱时,我收到 asn1 解析错误。 对于这个问题有什么想法或意见

© www.soinside.com 2019 - 2024. All rights reserved.