我正在尝试编写一个Python3程序,该程序将显示包含在公钥证书中的所有信息,类似于以下linux命令:
openssl x509 -in website.com.pem -text
,它将返回类似于
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
04:7a:f7:95:47:c0:7d:0f:ef:80:a5:b2:1f:51:e3:63
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
Validity
Not Before: Mar 12 00:00:00 2018 GMT
Not After : Mar 11 23:59:59 2020 GMT
Subject: OU = Domain Control Validated, OU = PositiveSSL, CN = acs.cdroutertest.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
如以下网站所示:https://support.qacafe.com/knowledge-base/how-do-i-display-the-contents-of-a-ssl-certificate/
我已经尝试了python3中的加密或pyopenssl模块,并且能够导入证书并显示例如公钥。然而,我没有找到一种方法来浏览所有可用的信息并只显示它们,而不必为证书中可能提供或可能不可用的每个字段编写print()语句。
有谁知道如何把我推向正确的方向吗?
非常感谢,谢谢!
发布于 2021-02-16 11:39:49
实际上疏忽了我注意力的一个解决方案是使用模块asn1tools
import asn1tools
foo = asn1tools.compile_files("x509.asn")
output = foo.decode("Certificate", cert)
只有X509所需的所有ASN.1定义必须在文件x509.sem中可用(可通过相应的RFC获得),而"cert“保存字节串。
结果将是一个包含所有信息的python字典,而不必遍历任何内容或丢失某些不寻常的参数。
https://stackoverflow.com/questions/64712576
复制相似问题