所以,我在使用 LDAP 时遇到了问题。我有一个集成测试用例,希望可以解决,但它目前遇到了 SSL 握手的 LDAPS 安全问题。
我能够使用 Apache Directory Studio 连接到 LDAPS,并且它已将密钥库下载到文件“permanent.jks”中。
没关系,但我希望使用 JRE 驻留在 Eclipse 中的集成测试能够使用此密钥库连接到 LDAP 服务器。
如何获取此密钥库并将其导入 JRE 以供自己使用?
好的,这是我的过程:
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 所说,别名不能存在于您的密钥库中。
您可以将所有别名从一个密钥库批量导入到另一个:
keytool -importkeystore -srckeystore source.jks -destkeystore dest.jks
要加载 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();