我想知道如何在java中以编程方式重命名密钥库的别名,而不是使用keytool。
我有java.security.KeyStore
个对象,包含某个别名。我怎样才能重命名呢?
答案 0 :(得分:3)
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);