java - 更新/删除证书链: Cannot assign the key to the given alias

标签 java digital-signature keystore public-key-encryption digital-certificate

我想用新的证书更新我以前的自签名证书,例如:从 TEST CA 返回(签名的 CSR)的。我的默认 keystore 是:Windows-MY

  • 第 1 步:我创建了一个自签名的私钥-公钥对 证书和 CSR(私钥存储在 Windows-MY 中) 自签名证书)。

  • 第 2 步:将 CSR 发送给 CA。

  • 第 3 步:CA 返回该公钥的证书链。

现在我想用 CA 返回的证书替换该自签名证书。注意:我的私钥存储在我的商店中。

Key privKey = keyStore.getKey(commonName, keyPass);
System.out.println("invalid private key :" + (privKey == null));

// keyStore.deleteEntry(commonName);
// keyStore.load(null, keyPass);

if (isPrivateKeyAvailable) {
    System.out.println("name:" + commonName + " is updatded");
    keyStore.setKeyEntry(commonName, privKey, keyPass, chains);
} else {
    System.out.println("name:" + commonName + " does not exist");
}

但我收到这些错误:

java.lang.UnsupportedOperationException: Cannot assign the key to the given alias. at sun.security.mscapi.KeyStore.engineSetKeyEntry(KeyStore.java:415) at sun.security.mscapi.KeyStore$MY.engineSetKeyEntry(KeyStore.java:55) at java.security.KeyStore.setKeyEntry(Unknown Source) at keygenerator.KeyInstaller.installCertificateInWindowsStore(KeyInstaller.java:284) at keygenerator.KeyInstaller.doJob(KeyInstaller.java:167) at keygenerator.KeyGeneration.installCertificate(KeyGeneration.java:171) at keygenerator.KeyGeneration.main(KeyGeneration.java:68)

最佳答案

Windows keystore (在 Java 中名为 Windows-MY)不可直接写入。您需要将私钥和CA返回的证书链打包成PKCS#12文件(.p12)并使用Windows导入工具导入。

关于java - 更新/删除证书链: Cannot assign the key to the given alias,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862317/

相关文章:

python - 在 Python 中验证数字签名的 PDF

Java 信任 ssl CA

java - 构建证书颁发机构架构

java - 移动二维数组中的特定列

java - Lucene:根据相关性进行搜索和检索

java - Spring Framework中applicationContext.xml和spring-servlet.xml的区别

ssl - 更新别名下的其中一个证书

java - 如何在JAVA 8中处理对象的嵌套列表-顺序处理内部列表,而必须并行处理外部列表

windows - 如何使用加密 api 获取颁发者证书公钥

java - 如何使用java中的数字签名对文档进行电子签名