如何使用Java以编程方式将证书安装到windows个人证书存储?
在windows个人证书存储中,我尝试使用Java以编程方式安装带有私钥的证书(使用方法setKeyEntry)。但是当我这样做的时候,我得到了一个例外如何使用Java以编程方式将证书安装到windows个人证书存储?,java,cryptography,jce,jca,Java,Cryptography,Jce,Jca,在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(CKeySt
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());
}
证书已在
setKeyEntry
期间设置-请勿使用setCertificateEntry
存储证书
setCertificateEntry
用于设置(另一方的)可信证书,setKeyEntry
用于存储私钥和属于该私钥的完整证书链
因此,当您设置私钥时,别名已被“受信任证书”占用。因为我自己没有对此进行测试(只是应用了推理),如果这解决了您的问题,请在下面进行评论(我认为它是通过accept解决的,但是的,只是想确定一下)。