如何/如何使用python和加密模块生成PKCS#12文件?

前端之家收集整理的这篇文章主要介绍了如何/如何使用python和加密模块生成PKCS#12文件? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如何/如何使用pythoncryptography模块生成PKCS#12文件

使用上述模块为私钥生成.pem文件内容非常容易:

keyPEMBytes = privateKey.private_bytes(
    encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.TraditionalOpenSSL,encryption_algorithm=serialization.NoEncryption())

也很容易为相关证书生成.cer / .pem文件内容

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]
)

猜你在找的Python相关文章