JKS、BKS和PKCS12文件格式

3

我正在设置一个无头服务器,使用用户提供的数据(JS、CSS、HTML + 密钥库)构建Android Phonegap混合应用程序。我希望实施一些基本的客户端检查以确保上传的密钥库是有效的。对于JKS文件,我已经发现可以通过确保所提供的文件的前4个字节是MAGIC数字0xFEEDFEED来进行基本检查,如这里所指定。我意识到这并不能消除用户提供垃圾文件的可能性,但它可以作为初步的客户端筛选。我希望为PKCS12和BKS密钥库实施类似的筛选,但是我找不到有关这些文件格式的任何说明。如果有人能够提供一些信息,我将非常感激。

1个回答

4

首先,需要考虑两件事情:

  • 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格式的更易于理解的解释,请点击此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接