如何从cacerts删除所有证书?

And*_*eev 3 keystore keytool ssl-certificate android-keystore

我知道我可以用

keytool -delete -alias alias -keystore .keystore
Run Code Online (Sandbox Code Playgroud)

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

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

alw*_*arn 5

没有一个命令keytool可以删除密钥库中的所有条目。您必须执行一些变通办法以实现此目的。

您可以通过使用KeyStoreapi 编写简单的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());
Run Code Online (Sandbox Code Playgroud)

(要么)

创建一个类似的存储,因为您已经知道cacerts密钥存储的类型(此处有较小的解决方法)。

  1. 创建密钥cacerts库文件时,最初会创建一个具有密钥对的密钥库。

keytool -genkeypair -keystore cacerts -storepass changeit

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

keytool-删除-keystore cacerts -storepass changeit -alias mykey

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