首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java以编程方式将证书安装到windows个人证书存储区?

如何使用Java以编程方式将证书安装到windows个人证书存储区?
EN

Stack Overflow用户
提问于 2021-04-06 04:54:06
回答 1查看 135关注 0票数 1

在windows个人证书存储区中,我试图使用Java以编程方式安装带有私钥(使用方法setKeyEntry)的证书。但当我这么做的时候我得到了一个例外。

代码语言:javascript
复制
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)

代码片段:

代码语言:javascript
复制
    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());
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 16:48:12

证书已在setKeyEntry期间设置-不要使用setCertificateEntry存储证书。

setCertificateEntry用于设置受信任的证书(另一方的证书),setKeyEntry用于存储私钥和属于该私钥的完整证书链。

因此,当您设置私钥时,别名已经被“可信证书”所采用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66962876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档