将一个证书存储到我的 Java 密钥库后的多个条目

Multiple entries after storing one single certificate into my Java keystore

我正在使用 class InstallCert 将 VMware vCenter 证书导入我的本地 Java 密钥库。

socket.startHandshake()returns和UnsupportedOperationException,但是classSavingTrustManager仍然下载证书成功。

然后我使用以下代码片段将下载的证书存储到我的本地密钥库中。

KeyStore jsk;
... ... ..
jks.setCertificateEntry(alias, cert);
OutputStream out = new FileOutputStream("jssecacert");
jks.store(out, passphrase);
out.close();

但是当我尝试列出密钥库中的所有条目时:keytool -list -keystore jssecacerts -v,它显示有 160 个条目,包括我下载的那个。

我很确定密钥库是由我的代码生成的,它最初应该是空的。我想知道其他 159 个条目来自哪里?

谢谢。

使用 KeyStoreExplorer 比较两个信任库:Installcert class 生成的 jssecacerts 和位于 Java>jre>security>lib 中的 cacerts 文件。

Istallcert 从服务器获取证书并创建您正在使用的 JVM 的信任库副本。然后它将证书添加到您的信任库副本,并将其命名为 "jssecacerts"。检查这段代码:

</p> <pre><code>File file = new File("jssecacerts"); if (file.isFile() == false) { char SEP = File.separatorChar; File dir = new File(System.getProperty("java.home") + SEP + "lib" + SEP + "security"); file = new File(dir, "jssecacerts"); if (file.isFile() == false) { file = new File(dir, "cacerts"); } }

然后您只需将 jsscacerts 重命名为 cacerts 并替换您 JVM 上的原始文件