【问题标题】:Python OpenSSL - Verifying a CRL FilePython OpenSSL - 验证 CRL 文件
【发布时间】:2014-08-12 12:12:40
【问题描述】:

我们正在使用 Python 和 OpenSSL 读取 CRL 文件以提取已撤销证书序列号的列表。在解析文件之前,我们需要添加一个检查以验证 CRL 是否已使用受信任的证书导出。

在命令行中,适当的 OpenSSL 命令是: openssl crl -inform DER -in {crlfile} -CAfile {mycacert} -noout

输出verify OKverify failure

有没有一种 Pythonic 方式来执行此验证,而不必使用命令行脚本?

谢谢

【问题讨论】:

    标签: python openssl


    【解决方案1】:

    使用 python 执行此操作的方法之一是使用 subprocess 模块。

    如果您使用的是 Python 2.7 之后的版本,则可以使用您要运行的命令调用 check_output 方法。见下文:

    import subprocess
    
    # Files to verify
    crlfile = r"path\to\crlfile"
    mycacert = r"path\to\mycacert"
    # Set up args
    args = ["openssl", "crl", "-inform", "DER", "-in", crlfile, "-CAfile", mycacert, "-noout"]
    # Run the thing
    output = subprocess.check_output(args)
    verified = True if output.upper() == "VERIFY OK" else False
    

    根据this 拉取请求,此功能现在似乎在pyOpenSSL 中可用。

    【讨论】:

    • 谢谢,Noelkid,但这不是我正在寻找的解决方案。 CRL 已经包含在 Python 中的字符串缓冲区中,如果可能的话,我们并不特别希望通过文件系统,因此我们希望直接从 python 调用它,而不是包装原生调用。
    • 我感觉这不是您想要的,将进一步研究。
    • 您好 Noelkd,尽管您的答案与我最初寻找的不完全一样,但我没有找到更好的解决方案,因此我实施并接受了您的答案。
    • 我最终调查了pyOpenSSL 看不到您需要的功能out of the box。如果其他人有更好的答案,您可以稍后将问题奖励给他们!
    【解决方案2】:

    通过使用 pyOpenSSL,有一种更 Pythonic 的方式来做到这一点:

    import requests
    import OpenSSL
    
    # Donwload and load your CRL
    resp = requests.get(CRL_URL)
    crl = OpenSSL.crypto.load_crl(OpenSSL.crypto.FILETYPE_ASN1, resp.content)
    
    # Export CRL as a cryptography CRL.
    crl_crypto = crl.to_cryptography()
    
    # Load CA CERTIFICATE
    ca = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, '-----BEGIN...'.encode())    
    
    # Get CA Public Key as _RSAPublicKey
    ca_pub_key = ca.get_pubkey().to_cryptography_key()
    
    # Validate CRL against CA
    valid_signature = crl_crypto.is_signature_valid()
    

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2019-01-11
      • 2015-09-17
      • 1970-01-01
      相关资源
      最近更新 更多