Chr*_* W. 4 python openssl pyopenssl ssl-certificate x509certificate
当我在 PEM 编码的完整证书链上使用OpenSSL.crypto.load_certificate(b'< PEM encoded certificate bytes >')函数时,只有第一个证书作为对象加载OpenSSL.crypto.X509。
其余的证书将被完全忽略。我认为这是因为解析器点击“END CERTIFICATE”并停止读取。OpenSSL(或其他地方)中是否有实用程序函数可以解析并加载整个证书链?
----- BEGIN CERTIFICATE -----我所说的“完整证书链”是指包含多个/标记的 PEM 格式的证书----- END CERTIFICATE -----。
这个答案在下一个版本 (39) 之前不会完全适用cryptography,但您现在可以使用以下命令来执行此操作cryptography.x509.load_pem_x509_certificates:
from cryptography import x509
certs = x509.load_pem_x509_certificates(b"...")
Run Code Online (Sandbox Code Playgroud)
该 API 将在输入中返回一个或多个证书的列表,或者如果不存在有效的证书 PEM,则会引发异常。
以下是从 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3402 次 |
| 最近记录: |