我知道我可以使用
keytool -delete -alias alias -keystore .keystore
要从证书存储中删除某些证书。 但我在cacerts中存储了109个证书:keytool -list result
如何用一个命令将它们全部删除? 或者换句话说,如何清除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
密钥库的类型(在此处进行了次要的解决方法)。
cacerts
密钥库文件时最初生成密钥对。keytool -genkeypair -keystore cacerts -storepass changeit
keytool -delete -keystore cacerts -storepass changeit -alias mykey
由于 cacerts 是默认密钥库,所以您不需要在 keytool 命令中指定其他属性,让 Java 为您处理默认值即可。现在,您应该有一个空的 cacerts 密钥库。
https://docs.oracle.com/cd/E19683-01/817-2874/6migoia18/index.html
这对我有用:sudo keytool -delete -alias cacertName -keystore $JAVA_HOME/lib/security/cacerts
不要忘记,你必须知道要删除的 cacert 的 keystore 密码,否则你将无法删除它。