【问题标题】:Get .pfx Cert File Expiration with pyOpenSSL使用 pyOpenSSL 获取 .pfx 证书文件过期时间
【发布时间】:2015-06-30 08:35:02
【问题描述】:

我正在尝试使用 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())) 

代码在这里

【问题讨论】:

  • 如果用户没有安装openssl,那么你期望pyOpenSSL如何工作?它只是 openssl 的一个包装器。
  • 是吗?废话,我以为是分开的。感谢您的注意,我将在命令行中使用 OpenSSL。

标签: python openssl pyopenssl


【解决方案1】:

避免:

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

将四行改为:

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

【讨论】:

    【解决方案2】:

    您需要转换为 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

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 2015-08-30
      • 2020-10-27
      • 1970-01-01
      相关资源
      最近更新 更多