如何从cacerts中删除所有证书?

6

我知道我可以使用

keytool -delete -alias alias -keystore .keystore

要从证书存储中删除某些证书。 但我在cacerts中存储了109个证书:keytool -list result

如何用一个命令将它们全部删除? 或者换句话说,如何清除cacerts存储?

2个回答

8

没有一个keytool命令可以删除密钥库中的所有条目。您需要进行一些变通才能实现这一点。

您可以通过使用KeyStore API编写简单的Java代码来完成此操作:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream(new File("KEYSTORE_PATH")), "changeit".toCharArray());

Enumeration<String> aliases = ks.aliases();

while (aliases.hasMoreElements())
{
    String alias = aliases.nextElement();

    ks.deleteEntry(alias);
}

ks.store(new FileOutputStream(new File("KEYSTORE_PATH")), "changeit".toCharArray());

或者,创建一个类似的存储区,因为您已经知道了 cacerts 密钥库的类型(在此处进行了次要的解决方法)。

  1. 创建一个 KeyStore,并在创建 cacerts 密钥库文件时最初生成密钥对。

keytool -genkeypair -keystore cacerts -storepass changeit

  1. 删除最初创建的密钥对条目。

keytool -delete -keystore cacerts -storepass changeit -alias mykey

由于 cacerts 是默认密钥库,所以您不需要在 keytool 命令中指定其他属性,让 Java 为您处理默认值即可。现在,您应该有一个空的 cacerts 密钥库。


0

1
这个命令将帮助您逐个删除证书。原始问题是如何一次性删除所有证书。因此,很抱歉,您的答案不合适。 - Andrey Aleev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接