更新/删除证书链:无法将密钥分配给给定的别名

时间:2017-08-24 12:59:18

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

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

  • 第1步:我创建了一个自签名的私钥 - 公钥对 certifcate和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:无法将密钥分配给   别名。在   sun.security.mscapi.KeyStore.engineSetKeyEntry(KeyStore.java:415)at   sun.security.mscapi.KeyStore $ MY.engineSetKeyEntry(KeyStore.java:55)     在java.security.KeyStore.setKeyEntry(未知来源)at   keygenerator.KeyInstaller.installCertificateInWindowsStore(KeyInstaller.java:284)     at keygenerator.KeyInstaller.doJob(KeyInstaller.java:167)at   keygenerator.KeyGeneration.installCertificate(KeyGeneration.java:171)     在keygenerator.KeyGeneration.main(KeyGeneration.java:68)

1 个答案:

答案 0 :(得分:1)

Windows密钥库(来自Java的名为Windows-MY)不可直接写入。您需要将CA返回的私钥和证书链打包到PKCS#12文件(.p12)中,然后使用Windows导入工具将其导入。