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

标签 ssl-certificate keystore keytool android-keystore

我知道我可以使用

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


  • 删除最初创建的 key 对条目。

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



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

    关于ssl-certificate - 如何从 cacerts 中删除所有证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48417771/

    相关文章:

    java - Keytool 生成版本 3 证书

    java - 企业 Java Webstart 分发 : use site-wide accepted certificate to sign a code-signing certificate

    php - 将 PDO::MYSQL_ATTR_SSL_CA 与 Propel ORM 一起使用

    ruby - Faraday::SSLError(SSL_connect 返回=1 errno=0 state=error: 证书验证失败(无法获取本地颁发者证书))

    c# - 如何使用 c# 2.0 WebClient 忽略证书错误 - 没有证书

    ssl - 浏览器不应用客户端证书 : 403. 7

    java - 如何模拟 keystore 类并将模拟行为分配给其方法?

    ssl - 将 .crt 和 .pem 文件转换为 keystore

    android - ECDH 与 Android Key Store 中的 key