如何将现有Java密钥库(.jks)文件导入Java安装?

时间:2011-10-18 19:17:09

标签: java keystore jks

所以,我遇到了LDAP问题。我有一个集成测试用例,希望能够解决,但它目前在SSL握手中遇到了LDAPS安全问题。

我可以使用Apache Directory Studio连接到LDAPS,并将密钥库下载到文件“permanent.jks”中。

没关系,但我希望我的集成测试(使用JRE驻留在Eclipse中)能够使用此密钥库连接到LDAP服务器。

如何获取此密钥库并将其导入JRE以供自己使用?

3 个答案:

答案 0 :(得分:41)

好的,这是我的过程:

keytool -list -v -keystore permanent.jks - 给我别名。

keytool -export -alias alias_name -file certificate_name -keystore permanent.jks - 获得了要导入的证书。

然后我可以用keytool导入它:

keytool -import -alias alias_name -file certificate_name -keystore keystore location

正如@Christian Bongiorno所说,别名不能存在于您的密钥库中。

答案 1 :(得分:26)

要加载KeyStore,您需要告诉它密钥库的类型(可能是jceks),提供输入流和密码。然后,您可以这样加载它:

KeyStore ks  = KeyStore.getInstance(TYPE_OF_KEYSTORE);
ks.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD);

这可能会引发KeyStoreException,因此如果您愿意,可以将其包围在try块中,或者重新抛出。请记住,密钥库可以包含多个密钥,因此您需要使用别名查找密钥,这是一个带对称密钥的示例:

SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry(SOME_ALIAS,new KeyStore.PasswordProtection(SOME_PASSWORD));
SecretKey someKey = entry.getSecretKey();

答案 2 :(得分:24)

您可以将所有别名从一个密钥库批量导入到另一个密钥库:

keytool -importkeystore -srckeystore source.jks -destkeystore dest.jks