所以,我遇到了LDAP问题。我有一个集成测试用例,希望能够解决,但它目前在SSL握手中遇到了LDAPS安全问题。
我可以使用Apache Directory Studio连接到LDAPS,并将密钥库下载到文件“permanent.jks”中。
没关系,但我希望我的集成测试(使用JRE驻留在Eclipse中)能够使用此密钥库连接到LDAP服务器。
如何获取此密钥库并将其导入JRE以供自己使用?
答案 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