
在windows个人证书存储区中,我试图使用Java以编程方式安装带有私钥(使用方法setKeyEntry)的证书。但当我这么做的时候我得到了一个例外。
Caused by: java.lang.UnsupportedOperationException: Cannot assign the key to the given alias.
at jdk.crypto.mscapi/sun.security.mscapi.CKeyStore.engineSetKeyEntry(CKeyStore.java:405)
at jdk.crypto.mscapi/sun.security.mscapi.CKeyStore$MY.engineSetKeyEntry(CKeyStore.java:57)代码片段:
KeyStore userCertStore = KeyStore.getInstance(getValue(CERTIFICATE_STORE_TYPE));
userCertStore.load(null,null);
for (iaik.x509.X509Certificate cert : user.getUserCertificates()) {
userCertStore.setCertificateEntry(cert.getSubjectDN().toString(), cert);
userCertStore.setKeyEntry(cert.getSubjectDN().toString(),user.getUserPrivateKey(cert),new
SecureStringBuffer(new StringBuffer(password)).toCharArray(),user.getUserCertificates());
}发布于 2021-04-08 16:48:12
证书已在setKeyEntry期间设置-不要使用setCertificateEntry存储证书。
setCertificateEntry用于设置受信任的证书(另一方的证书),setKeyEntry用于存储私钥和属于该私钥的完整证书链。
因此,当您设置私钥时,别名已经被“可信证书”所采用。
https://stackoverflow.com/questions/66962876
复制相似问题