【问题标题】:How to load all the certificates in a PEM-encoded certificate chain?如何加载 PEM 编码证书链中的所有证书?
【发布时间】:2020-09-30 07:11:26
【问题描述】:

当我在 PEM 编码的完整证书链上使用 OpenSSL.crypto.load_certificate(b'< PEM encoded certificate bytes >') 函数时,只有第一个证书作为 OpenSSL.crypto.X509 对象加载。

剩余的证书将被完全忽略。我认为这是因为解析器点击“END CERTIFICATE”并停止阅读。 OpenSSL(或其他地方)是否有解析和加载整个证书链的实用函数?

“完整证书链”是指包含多个 ----- BEGIN CERTIFICATE ----- / ----- END CERTIFICATE ----- 标记的 PEM 格式证书。

【问题讨论】:

    标签: python openssl ssl-certificate x509certificate pyopenssl


    【解决方案1】:

    这是一个简短的 sn-p,它从 PEM 编码的字节缓冲区中读取所有证书:

    start_line = b'-----BEGIN CERTIFICATE-----'
    
    def read_all_certs(pem_bytes):
        result = []
        cert_slots = pem_bytes.split(start_line)
        for single_pem_cert in cert_slots[1:]:
            cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, start_line+single_pem_cert)
            result.append(cert)
        return result
    

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 2014-02-13
      • 2023-03-31
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多