我正在尝试使用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()))
代码在这里
之后,您需要转换为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