使用pyOpenSSL获取.pfx证书文件到期

时间:2015-04-22 15:08:05

标签: python openssl pyopenssl

我正在尝试使用pyOpenSSL来检查客户端需要与我的应用程序一起使用的.pfx文件的过期时间。我们向客户颁发证书,并且每两年到期一次。我知道在命令行中使用openssl,通过转换为.pem然后在生成的.pem文件上运行'-noout -enddate'。

客户端很可能没有安装openssl,所以我想尽可能使用该库。我如何检查.pfx到期日期?我已经加载了证书,但不知道如何A)转换为.pem文件(如果我需要)和B)检查该.pem文件(或编码字符串)的到期时间。

谢谢!

到目前为止:

import OpenSSL

from OpenSSL.crypto import *
cert_path = 'C:\\Clients\\Omega\\bos.omegaadv.gtssloader.pfx'
p12 = load_pkcs12(open(cert_path, 'rb').read(), 'globallink')
x = p12.get_certificate()

print(OpenSSL.crypto.dump_certificate(FILETYPE_PEM, p12.get_certificate())) 

代码

2 个答案:

答案 0 :(得分:0)

您需要转换为x509,然后才能通过访问属性 not_valid_after

来检索到期日期。

我使用库密码进行转换

尝试:

from OpenSSL import crypto
from cryptography import x509
from cryptography.hazmat.backends import default_backend

pkcs12 = crypto.load_pkcs12(open('cert.pfx', "rb").read(), '1234')
pem_data = crypto.dump_certificate(crypto.FILETYPE_PEM, pkcs12.get_certificate())
cert = x509.load_pem_x509_certificate(pem_data, default_backend())
print(cert.not_valid_after) 

输出: 2019-08-03 19:35:19

答案 1 :(得分:0)

避免:

<块引用>

DeprecationWarning: str for passphrase 不再被接受,使用 字节

换四行:

pkcs12 = crypto.load_pkcs12(open('cert.pfx', "rb").read(), '1234'.encode('ascii'))