如何在PEM编码的证书链中加载所有证书?

问题描述 投票:0回答:1

[当我在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个回答
0
投票

这是一个简短的代码段,可从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
© www.soinside.com 2019 - 2024. All rights reserved.