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

How to remove all certificates from cacerts?

我知道我可以使用

keytool -delete -alias alias -keystore .keystore

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

如何一键删除?或者,换句话说,如何清除 cacerts 存储?

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. 最初在创建 cacerts 密钥库文件时使用密钥对创建密钥库。

keytool -genkeypair -keystore cacerts -storepass changeit

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

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

由于 cacerts 是默认密钥库,您无需在 keytool 命令中指定其他属性,让 java 为您处理默认值。现在你应该有一个空的 cacerts 密钥库。