Откройте хранилище сертификатов 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));
}
Другие вопросы по тегам