我在列出我的个人(Windows)密钥库中安装的所有可用证书时遇到问题。
我使用以下代码获取所有证书别名的列表:
public static void main(String[] args) {
try {
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Enumeration<String> en = ks.aliases();
while (en.hasMoreElements()) {
String aliasKey = (String) en.nextElement();
System.out.println("---> alias '" + aliasKey + "'");
//TODO GET CERT ETC
}
} catch (Exception ioe) {
System.err.println(ioe.getMessage());
}
}
它工作正常,列出了我最近安装的 2 个证书。
然而。
计算机重新启动后,代码仅列出一个证书别名,尽管在系统中(使用 certmgr.msc)我仍然有两个处于活动状态的证书。
更重要的是 - 安装的证书来自智能卡: - ENCARD(使用 ENIGMA CAPI) - UNIZETO CARD(不知道详细信息)
当我将 ENCARD 与 API 一起使用时,似乎出现了问题。重新启动后,UNIZETO 卡仍然可以正常工作。
有任何想法吗?