首页 > 解决方案 > pyOpenSSL 中的 PKCS#12 支持已弃用

问题描述

我想从 cert_name.pfx 中获取到期日期,例如: Get .pfx Cert File Expiration with pyOpenSSL

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)

我收到以下错误:

  1. 弃用警告:pyOpenSSL 中的 PKCS#12 支持已弃用。您应该在密码学中使用 API。
  2. 弃用警告:不再接受用于密码短语的 str,请使用字节。来自这条线:

第二个错误在 ....read(), b'1234') 之后消失了我添加了 'b'

如果我可以再使用它:crypto.load_pkcs12(open('cert.pfx', "rb").read(), '1234')

在读取 pkcs12 格式证书的到期日期时,我可以使用什么来代替?(使用python 3.8)

标签: pythoncryptographypkcs#12

解决方案


使用cryptography.hazmat.primitives.serialization.pkcs12.load_key_and_certificates

例子:

from cryptography.hazmat.primitives.serialization import pkcs12

with open("cert.pfx", "rb") as f:
    private_key, certificate, additional_certificates = pkcs12.load_key_and_certificates(f.read(), b"1234")
print(certificate.not_valid_after)

推荐阅读