我需要获得不可否认和数字签名证书。我已经实现了这个代码来获得这些证书:如何为PKI客户端获取非拒绝和数字签名证书
keyStore.load(null, null);
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
if (keyStore.isKeyEntry(alias)) {
java.security.cert.Certificate certificate = keyStore.getCertificate(alias);
}
}
问题是,数字和不可抵赖性证书具有相同的别名。所以当我打电话给keystore.getCertificate
时,系统总是会返回第一个结果,尽管在certmgr.msc窗口中我可以看到有两个证书存在,而LOOP块执行两次,但系统总是会从第一个证书返回重复结果。我如何解决这个问题?
我绝对不会问如何区分不可否认性和数字签名的问题。我问的是提取证书的过程,因此,请您提出一种加载两个证书的方法,因为我现在正在执行的方式会检测两个证书,但在每次迭代中加载相同的对象 – user435245
已经更新了我的答案,所以现在列表将包含密钥存储所拥有的所有证书。 – divanov
这是正确的想法,但不幸的是,由于Windows存储中的实现细节(bug?),这不会列出商店中的所有证书...... – Bruno