【发布时间】:2015-08-17 20:03:27
【问题描述】:
我想知道如何在 java 中以编程方式重命名密钥库的别名,而不是使用 keytool。
我有我的java.security.KeyStore 对象,其中包含某个别名。如何重命名?
【问题讨论】:
-
为什么?你管别名是什么?
-
@EJP 内部要求
我想知道如何在 java 中以编程方式重命名密钥库的别名,而不是使用 keytool。
我有我的java.security.KeyStore 对象,其中包含某个别名。如何重命名?
【问题讨论】:
KeyStore API 不提供别名的重命名操作。但是你可以做的是:
作为 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);
【讨论】: