0

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

该行socket.startHandshake()返回一个UnsupportedOperationException,但该类SavingTrustManager仍然成功下载了证书。

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

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

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

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

谢谢。

4

1 回答 1

1

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

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

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 上的原始名称

于 2016-01-27T15:01:38.630 回答