3

我试图在 JSP 中显示来自客户端证书存储的证书列表。在 .Net 中有一个选项可以使用以下代码显示证书列表...

X509Store xStore = new X509Store(...);
xStore.Open(...); // This will open the list of certicates in open dialog box.

是否有任何类似的功能可以在 Java 中获取此信息?

4

1 回答 1

2

您可以使用默认的 JDK 类打开 JKS 商店,打开 pkcs12 文件或您需要像 bouncycastle 这样的库的类似文件。例如:

KeyStore keystore = KeyStore.getInstance("PKCS12", "BC");

然后加载实际的密钥库:

keystore.load(inputStream, password);

请注意,bouncycastle 或 jdk 对空密码的处理方式不同(一个需要空字符串,另一个需要空 iirc)。拥有密钥库实例后,您可以通过遍历别名并检查类型轻松获取证书:

Enumeration<String> aliases = keystore.aliases();
while (aliases.hasMoreElements()) {
    String alias = aliases.nextElement();
    if (store.entryInstanceOf(alias, KeyStore.TrustedCertificateEntry.class))
        certificates.put(alias, (X509Certificate) store.getCertificate(alias));
}
于 2013-01-11T07:05:43.237 回答