【问题标题】:Rename JKS alias with java programmatically以编程方式使用 java 重命名 JKS 别名
【发布时间】:2015-08-17 20:03:27
【问题描述】:

我想知道如何在 java 中以编程方式重命名密钥库的别名,而不是使用 keytool。

我有我的java.security.KeyStore 对象,其中包含某个别名。如何重命名?

【问题讨论】:

  • 为什么?你管别名是什么?
  • @EJP 内部要求

标签: java keystore jks


【解决方案1】:

KeyStore API 不提供别名的重命名操作。但是你可以做的是:

  1. 保存要重命名的密钥库条目的内容(密钥对、证书)。
  2. 删除条目。
  3. 使用保存的内容和新别名创建一个新条目。

作为 Java 代码:

Key privateKey = keyStore.getKey(alias, password.toCharArray());
Certificate[] certs = keyStore.getCertificateChain(alias);
keyStore.setKeyEntry(newAlias, privateKey, password.toCharArray(), certs);
keyStore.deleteEntry(alias);

当然,如果私钥存储在硬件设备(智能卡或 HSM)上并因此不可读,这将不起作用。

如果密钥库条目包含受信任的证书,则代码看起来有点不同:

Certificate cert = keyStore.getCertificate(alias);
keyStore.setCertificateEntry(newAlias, cert);
keyStore.deleteEntry(alias);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 2011-11-02
    • 2023-03-11
    • 1970-01-01
    • 2013-09-29
    • 2014-01-13
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多