如何/如何使用python和cryptography模块生成PKCS#12文件?
keyPEMBytes = privateKey.private_bytes(
encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.TraditionalOpenSSL,encryption_algorithm=serialization.NoEncryption())
certBytes = certificate.public_bytes(encoding=serialization.Encoding.PEM)
但是我需要它们(和它们的链)聚集在单个.p12(PKCS12文件)上.所述模块记录了how to parse/consume PKCS12 formats,但是关于如何生成它们却一无所获(我能找到).
我对PKI东西的理解是偶然的,所以也许我只是没有在文档中搜索正确的关键字?
我可以使用以下命令在Linux上的命令行中创建.p12文件:
openssl pkcs12 -export -out myIdentity.p12 -inkey myPrivKey.pem -in myCert.crt -certfile myCertChain.crt
所以我可以用subprocess / cmd包装这样的调用,并用tempfiles / pipes弄乱.我希望将其全部保留在内存/ python中.
我应该考虑使用其他的python TLS库吗?
最佳答案
如您所述,加密技术可以使用load_key_and_certificates解析PKCS12(至少99.99%的人使用的子集),但是当前不支持序列化到PKCS12.
我是该项目的核心开发人员之一,总的来说,密码学的功能集由用户提出问题来解释,这些问题解释了他们的用例和对特定功能的需求.我建议在跟踪器上写一些东西进行讨论.听起来您的需求将由一个大致如下的简单API满足:
from cryptography.hazmat.primitives.serialization.pkcs12 import generate_pkcs12
pem_pkcs12 = generate_pkcs12(
BestAvailableEncryption(b"somepassword"),key,[cert1,cert2]
)