将加密的PrivateKey存储到Java Keystore

时间:2018-05-09 12:11:49

标签: bouncycastle x509certificate

Java Keystore(例如JKS,PKCS)允许saving私钥(接口 Key)和 证书链。但是,RSA KeyPair的私钥是加密的 (例如,bouncycastle或EncryptedPrivateKeyInfo中的javax)未实现 关键接口。

在密钥库中存储加密私钥的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

如果您已经有EncryptedPrivateKeyInfo,则应该可以在创建密钥库条目时直接使用它。 Java将KeyKore中的PrivateKey存储为EncryptedPrivateKeyInfo格式。

您需要在KeyStore.setKeyEntry(String alias, byte[] key, Certificate[] chain)中使用此方法。文档here

另一个setKeyEntry方法接受一个addtional参数,即密码,Java将使用提供的密码构造EncryptedPrivateKeyInfo本身。

注意:只有Java支持Key Protection Algorithm,它才会导入私钥,否则会抱怨。如果它有抱怨,您可以查看自己解密加密私钥的其他选项,并使用其他setKeyEntry()方法。