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

时间:2018-01-24 08:21:47

标签: ssl-certificate keystore keytool android-keystore

我知道我可以使用

keytool -delete -alias alias -keystore .keystore

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

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

1 个答案:

答案 0 :(得分:3)

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());

(OR)

创建一个类似的商店,因为您已经知道cacerts密钥库的类型(此处为次要解决方法)。

  1. 在创建cacerts密钥库文件时,最初使用密钥对创建KeyStore。
  2.   

    keytool -genkeypair -keystore cacerts -storepass changeit

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

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

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