用java编程重命名JKS别名

用java编程重命名JKS别名,java,keystore,jks,Java,Keystore,Jks,我想知道如何在java中以编程方式重命名密钥库的别名,而不是使用keytool 我有我的java.security.KeyStore对象,它包含一个特定的别名。如何重命名它?密钥库API不提供别名的重命名操作。但你能做的是: 保存要重命名的密钥存储项的内容(密钥对、证书) 删除条目 使用保存的内容和新别名创建新条目 作为Java代码: Key privateKey = keyStore.getKey(alias, password.toCharArray()); Certificate[] ce

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


我有我的
java.security.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)上,因此不可读,则这不起作用

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

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

    为什么?你在乎别名是什么?@EJP内部必备项