我正在使用python加载pfx证书。
pfx = crypto.load_pkcs12(pfx, self.nfe_a1_password)
cert = pfx.get_certificate()
end = datetime.strptime(cert.get_notAfter(), '%Y%m%d%H%M%SZ')
subj = cert.get_subject()
http://www.pyopenssl.org/en/stable/api/crypto.html#OpenSSL.crypto.PKCS12.get_ca_certificates
我得到了一个有趣的证书,方法get_certificate()返回None,如果我调用get_ca_certificate,它将返回证书。
如果pfx不返回证书,这意味着什么?证书颁发者给我发错了?
1条答案
按热度按时间yv5phkfx1#
6岁的问题,但pkcs#12证书通常分为两部分:
公钥由根CA签名(认证授权),也可以是自签名。如果它根本没有签名,那么客户端可能无法连接到服务器(错误:来自浏览器或代码上下文的不可信证书)。关于您的问题,公共证书可能是一个证书链,其中包含所有中间CA的足迹。其目的是让客户端跟踪服务器证书并返回到根CA公钥。
公共(PEM格式)证书是所有中间CA的所有公钥的串联,看起来像这样:
因此,如果没有中间CA,则最后两个证书(
Trust chain intermediate certificate
和Trust chain root certificate
)可能存在,也可能不存在,因此调用将为
None
如果不是无,那么你可能想把它们都附加到你自己的证书链/文件中。