2009-10-30 51 views
2

我正在使用Python(在Google App Engine下),并且我有一些RSA私钥,需要以PKCS#12格式导出。有什么可以帮助我吗?我使用的是PyCrypto/KeyCzar,我已经想出了如何导入/导出PKCS8格式的RSA密钥,但是我真的需要PKCS12。如何在Python中使用PKCS12对RSA密钥进行编码?

任何人都可以指向正确的方向吗?如果有帮助,我需要PKCS12格式的原因是我可以将它们导入到iPhone中,这似乎只允许以该格式导入密钥。

+0

您是否必须使用python以编程方式导出密钥,或者您可以在本地获取它们的位置并按照正义建议使用OpenSSL? – 2009-10-30 01:45:55

回答

2

如果你能处理一些ASN.1代,可以相对容易地一个PKCS#8文件转换为PKCS#12文件。 PKCS#12文件基本上是PKCS#8和证书的包装,因此要制作PKCS#12文件,您只需在PKCS#8文件和证书周围添加一些附加数据。

通常,PKCS#12文件将包含加密结构中的证书,但所有兼容的解析器应能够从未加密的结构中读取它。此外,PKCS#12文件通常会包含用于完整性检查的MacData结构,但这是可选的,并且符合的解析器应该在没有它的情况下正常工作。

+0

我认为这将是我的道路。 KeyCzar包含一个ASN1解析器/创建器,这是我从中获取PKCS#8文件的地方。我不知道PKCS#12只是PKCS#8文件的另一个包装。 (不幸的是,这些东西很难解开,所有含有特殊字符的极其相似的首字母缩略词都会让Google产生混淆)。 我很可能将我的工作成果作为补丁或至少某种类型的贡献模块贡献给KeyCzar,以便其他人如果想要做类似的事情,还有一些地方可以选择。 – 2009-10-30 11:27:51

0

这项工作的标准工具通常是OpenSSL

请参阅openssl pkcs12命令。

+0

GAE不会运行openSSL二进制文件。 – 2009-10-30 01:44:50

+0

你有一些RSA私钥。你需要导出它们。但为什么你需要使用GAE导出它们?为什么不使用OpenSSL导出它们,然后将导出的pkcs12文件发送到GAE应用程序? – yfeldblum 2009-10-30 01:46:34

+0

每个用户都有自己的RSA密钥对,在注册时创建。虽然我可以从理论上产生一系列关键对并在注册时将它们分配给用户,但这似乎是一个非常糟糕的主意。 – 2009-10-30 02:03:09

0

该邮件列表发布往往表明PKCS12没有计划用于该包的未来功能,目前尚未实现。

http://lists.dlitz.net/pipermail/pycrypto/2009q2/000104.html

+0

如果你看* *原始*消息,该评论(关于PKCS12)有一个“只是开玩笑!”脚注在底部。 http://lists.dlitz.net/pipermail/pycrypto/2009q2/000100.html – 2009-10-30 02:06:55

+0

该评论略有不清,但我同意,似乎PKCS12不在这个包的地平线上。 – 2009-10-30 02:14:18

相关问题