JKS、BKS 和 PKCS12 文件格式

Posted

技术标签:

【中文标题】JKS、BKS 和 PKCS12 文件格式【英文标题】:JKS, BKS and PKCS12 file formats 【发布时间】:2016-01-19 07:16:10 【问题描述】:

我正在设置一个无头服务器,该服务器使用用户提供的数据(JS、CSS、html + 密钥库)为 android 构建 Phonegap 混合应用程序。我想进行一些基本的客户端检查,以确保上传的密钥库有效。对于 JKS 文件,我发现我可以通过确保提供的文件的前四个字节是指定的 here 的 MAGIC 编号 0xFEEDFEED 来进行基本检查。我意识到这并不能消除用户提供垃圾的可能性,但它确实有助于作为初步的客户端屏幕。我想对 PKCS12 和 BKS 密钥库实施类似的筛选,但无法找到这些文件格式的任何解释。我将非常感谢任何能够提供有关该主题的信息的人。

【问题讨论】:

【参考方案1】:

首先要考虑两点:

您的列表中缺少 JCEKS(更安全的 JKS 版本,幻数是 0xCECECECE)。 有两个不兼容的 BKS 版本。较新的版本是在 Bouncy Castle 1.47 中引入的,完全取代了旧版本。因此,使用 BC 1.47 或更高版本生成的 BKS 密钥库无法使用 BC 1.46 或更早版本读取。在 BC 1.49 中添加了新的密钥库类型“BKS-V1”,它与旧格式兼容(请参阅 BC Release Notes)。

BKS 格式以前 4 个字节中的版本号开始,以空字节和 SHA-1 哈希(20 个字节)结束。

PKCS#12 不是那么容易检测到的。您必须将其解析为 ASN.1 结构(请参阅RFC 7292):

PFX ::= SEQUENCE 
   version    INTEGER v3(3)(v3,...),
   authSafe   ContentInfo,
   macData    MacData OPTIONAL

如果文件无法解析为上述 ASN.1 结构,则不是 PKCS#12。

有关 PKCS12 格式的更易于理解的说明check here。

【讨论】:

以上是关于JKS、BKS 和 PKCS12 文件格式的主要内容,如果未能解决你的问题,请参考以下文章

将 .jks 转换为 p12

nexus配置https(在nexus上配置jks证书方式)

证书 pem 转 jks

pfx是啥格式的文件啊

pfx格式文件如何打开?如题 谢谢了

pfx是啥文件