加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:37:26 所属栏目:Python 来源:网络整理
导读:如何/如何使用python和cryptography模块生成PKCS#12文件? 使用上述模块为私钥生成.pem文件的内容非常容易: keyPEMBytes = privateKey.private_bytes( encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.TraditionalOpenSSL,encrypt

如何/如何使用python和cryptography模块生成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]
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读