使用Python Openssl库解析X509证书信息

X.509 证书结构描述

常见的X.509证书格式包括:

后缀 作用
cer/crt 用于存放证书,它是2进制形式存放的,不含私钥
pem 以Ascii来表示,可以用于存放证书或私钥。
pfx/p12 用于存放个人证书/私钥,他通常包含保护密码,2进制方式。
p10 证书请求
p7r CA对证书请求的回复,只用于导入
p7b 以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

对于常见的https证书 一般是用crt或者pem来保存, http证书可点击网页前的锁按钮得到, 并且进行导出

注意,此处导出的证书可能是.cer文件,在使用python3处理的时候,可能报告如下错误:

这个错误是由于python3处理二进制数据的时候编码不正确导致的,简单的解决方法使用使用openssl工具转换成文本格式,执行如下命令:

然后解析 certificate.crt 文件即可。

证书数据结构

此证书结构来着白皮书
https://tools.ietf.org/html/rfc2459#section-4.1

参考博客:
https://blog.csdn.net/xy010902100449/article/details/52145009

源代码

这里利用的是python3 的 Openssl 库进行解析, 此库的说明文档如下,
https://pyopenssl.org/en/0.15.1/api/crypto.html#x509name-objects

通过阅读说明文档, 可以轻松读取证书相关信息。

安装依赖库

代码如下

编译运行输出结果

注意,.cer格式的文件,在使用python3处理的时候,可能报告如下错误:

这个错误是由于python3处理二进制数据的时候编码不正确导致的,简单的解决方法使用使用openssl工具转换成文本格式,执行如下命令:

然后解析 certificate.crt 文件即可。

Chrome自带的解析结果对比

是相同的。

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注