Откройте хранилище сертификатов x509 из API Java
Я пытаюсь показать список сертификатов из хранилища сертификатов клиентов в JSP. В.Net есть возможность показать список сертификатов со следующим кодом...
X509Store xStore = new X509Store(...);
xStore.Open(...); // This will open the list of certicates in open dialog box.
Есть ли подобная функциональность для получения этой информации в Java?
1 ответ
Решение
Вы можете открыть JKS-хранилище, используя классы JDK по умолчанию, открыть файл pkcs12 или другие подобные вам библиотеки, такие как bouncycastle. Например:
KeyStore keystore = KeyStore.getInstance("PKCS12", "BC");
Затем загрузите реальное хранилище ключей:
keystore.load(inputStream, password);
Обратите внимание, что пустой пароль обрабатывается по-разному с помощью bouncycastle или jdk (один требует пустой строки, другой - null 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));
}