将一个证书存储到我的 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 上的原始文件
我正在使用 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 上的原始文件