Python的标准库,即使是最新版本,也不包含任何可解码X.509证书的内容。但是,附加
cryptography软件包确实支持此功能。引用文档中的示例:
>>> from cryptography import x509>>> from cryptography.hazmat.backends import default_backend>>> cert = x509.load_pem_x509_certificate(pem_data, default_backend())>>> cert.serial_number2
另一个可选的附加软件包是
pyopenssl。这是围绕OpenSSL C
API的精简包装,这意味着有 可能 做您想做的事情,但是希望花几天的时间来整理文档。
如果您无法安装Python附加软件包,但确实有
openssl命令行实用程序,
import subprocesscert_txt = subprocess.check_output(["openssl", "x509", "-text", "-noout", "-in", certificate])
应该会产生与您从中的Web实用工具获得的大致相同的东西
cert_txt。
顺便说一句,直接进行base64解码会产生二进制gobbledygook的原因是这里有两层编码。
X.509证书是ASN.1数据结构,序列化为X.690
DER格式,然后,由于DER是二进制格式,因此使用base64铠装以便于文件传输。(在这方面的许多标准都是在90年代编写的,当时您只能可靠地发送7位ASCII码,否则无法可靠地发送任何东西。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)