Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将现有的Java密钥库(.jks)文件导入Java安装?_Java_Keystore_Jks - Fatal编程技术网

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

如何将现有的Java密钥库(.jks)文件导入Java安装?,java,keystore,jks,Java,Keystore,Jks,因此,我在LDAP方面遇到了问题。我有一个集成测试用例,希望能够成功,但它目前遇到了SSL握手的LDAPS安全问题 我可以通过ApacheDirectory Studio连接到LDAPS,它已经将密钥库下载到文件“permanent.jks”中 没关系,但我希望我的集成测试(使用JRE驻留在Eclipse中)能够使用这个密钥库连接到LDAP服务器 如何获取此密钥库并将其导入JRE供其使用?要加载密钥库,您需要告诉它密钥库的类型(可能是jceks),提供输入流和密码。然后,您可以这样加载它: Ke

因此,我在LDAP方面遇到了问题。我有一个集成测试用例,希望能够成功,但它目前遇到了SSL握手的LDAPS安全问题

我可以通过ApacheDirectory Studio连接到LDAPS,它已经将密钥库下载到文件“permanent.jks”中

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


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

要加载密钥库,您需要告诉它密钥库的类型(可能是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();

好的,我的过程如下:

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

keytool-export-alias alias\u name-file certificate\u name-keystore permanent.jks
-为我获取了要导入的证书

然后我可以使用keytool导入它:

keytool-导入-别名别名\u名称-文件证书\u名称-密钥库密钥库位置


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

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

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

我让它工作,但有一个amendment(如果你想改变你的答案)。在导入过程中,具有“别名”(顺便说一句:不是一个带空格的好变量名)的部分必须是目标存储中不存在的别名。如果不指定别名,则默认为“1”-您可以在最后一步(导入)安装之前使用步骤1列出目标的别名,我收到错误
keytool错误:java.io.IOException:Keystore被篡改,或者密码不正确
,即使在上一步(导出)中,我可以成功完成我的密码。你知道为什么吗?@ThaiTran对于未来的读者,在导入证书时,请确保使用目标证书文件的密码,而不是用于创建证书的密码。还要注意,在许多系统上,JDK由root所有。如果是这种情况,您需要以root用户身份执行keytool-import命令。对于接收IOException的其他未来读卡器,cacerts的默认密码是“changeit”。好的,这确实有效。然而,我的“permanent.jks”包含了5种不同的证书。所以在keytool-list-v-keystore permanent.jks之后。。cmd+f“alias”查找所有别名并逐个导出。在5个独立的.cer文件之后,我能够将它们添加到cacerts中(也可以在这里的帮助后面添加一个)。谢谢你救了我的命。没有正确加载密钥库,直到我看到您的示例。很遗憾,我不能给你10000分。非常感谢你!!很乐意帮忙!您的感谢不仅仅是几点:)。您好,兄弟,您的代码用SHA1RSA写得很好,您能帮我加载一个密钥库SHA256RSA吗,上面写着“无效密钥库格式”。密钥库类型中的方法load(InputStream,char[])不适用于参数(FileInputStream,String)