java - 从 Java API 打开 x509 证书存储

标签 java x509certificate digital-certificate e-token

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

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

在 Java 中是否有类似的功能来获取这些信息?

最佳答案

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

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

然后加载实际的 keystore :

keystore.load(inputStream, password);

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

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));
}

关于java - 从 Java API 打开 x509 证书存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272842/

相关文章:

java - 如何使用Java代码防止保存jar内的公钥

java - 替代注释?

WCF 服务 - 证书未到达服务器

ios - SecCertificateCopySubjectSummary : How to get Certificate Information in human readable form?

ssl - 通过 SSL、证书等的 HttpWebRequest

powershell - 导入证书 - 访问被拒绝(以管理员身份运行时)

java - 证书加载问题

java - 如何链接使用 push() 方法保存的 firebase 中的两个子数据库?

c# - 从单元测试到集成测试的有效过渡

java - 如果存在冗余,我该如何从这个java问题中删除冗余?