我知道我可以使用
keytool -delete -alias alias -keystore .keystore
从证书存储中删除一些证书。但是我有 109 个证书存储在 cacerts 中:keytool -list result
如何用一个命令删除它们?或者,换句话说,你如何清除 cacerts 存储?
最佳答案
没有来自 keytool
的命令删除 keystore 中的所有条目。你必须做一些变通方法来实现这一点。
您可以通过使用 KeyStore
编写简单的 Java 代码来实现。接口(interface):
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
的类型 keystore (此处的小解决方法)。cacerts
时使用 key 对创建 KeyStore keystore 文件。 keytool -genkeypair -keystore cacerts -storepass changeit
keytool -delete -keystore cacerts -storepass changeit -alias mykey
由于 cacerts 是默认 keystore ,因此您无需在 keytool 命令中指定其他属性,让 java 为您处理默认值。现在您应该有一个空的 cacerts keystore 。
关于ssl-certificate - 如何从 cacerts 中删除所有证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48417771/