将加密的私钥存储到 Java 个密钥库

Storing encrypted PrivateKey's to Java Keystores

Java 密钥库(例如 JKS、PKCS)允许 saving 私钥(接口 Key) 和 证书链。但是,RSA KeyPair 的私钥已加密 (例如 EncryptedPrivateKeyInfo in bouncycastle or in javax)不执行 键接口。

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

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

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

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

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