我试图在JSP中显示来自客户端证书存储的证书列表。 在.Net中,可以选择使用以下代码显示证书列表...
X509Store xStore = new X509Store(...);
xStore.Open(...); // This will open the list of certicates in open dialog box.
是否有任何类似的功能可以用Java获取此信息?
答案 0 :(得分: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));
}