SunMSCAPI returns 没有证书
SunMSCAPI returns no certificates
我们正在尝试使用 SunMSCAPI 从 Windows 证书存储中检索证书。我创建了一个非常简单的示例来加载密钥库并列出可用的别名。但是,代码没有列出任何内容,即使我在密钥库中看到两个个人证书。
顺便说一句,在我自己的系统上它运行良好,但在我们将使用的实际应用服务器上它没有列出任何内容。
下面是我使用的代码
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Enumeration<String> aliases = ks.aliases();
System.out.println("Listing aliases " + ks.size());
while (aliases.hasMoreElements())
{
String ka = aliases.nextElement();
System.out.println(ka + " " + ks.isKeyEntry(ka));
}
以及应用服务器上证书存储的屏幕截图。如您所见,我希望列出两个别名(但也许我找错了位置?):
您看到的是计算机证书,而不是用户证书。 Windows-MY
keystore 只能使用个人用户证书。
您可以在控制面板中使用管理用户证书 (certmgr
)而不是管理计算机证书来浏览个人证书(certIm
)
我们正在尝试使用 SunMSCAPI 从 Windows 证书存储中检索证书。我创建了一个非常简单的示例来加载密钥库并列出可用的别名。但是,代码没有列出任何内容,即使我在密钥库中看到两个个人证书。
顺便说一句,在我自己的系统上它运行良好,但在我们将使用的实际应用服务器上它没有列出任何内容。
下面是我使用的代码
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Enumeration<String> aliases = ks.aliases();
System.out.println("Listing aliases " + ks.size());
while (aliases.hasMoreElements())
{
String ka = aliases.nextElement();
System.out.println(ka + " " + ks.isKeyEntry(ka));
}
以及应用服务器上证书存储的屏幕截图。如您所见,我希望列出两个别名(但也许我找错了位置?):
您看到的是计算机证书,而不是用户证书。 Windows-MY
keystore 只能使用个人用户证书。
您可以在控制面板中使用管理用户证书 (certmgr
)而不是管理计算机证书来浏览个人证书(certIm
)