Как создать экземпляр объекта javax.security.X509Certficate из сертификата p12 (содержит сертификат + закрытый ключ)

X509Certificate может быть создан только с использованием содержимого сертификата (файл .cer). Как создать экземпляр этого объекта с помощью файла .p12, который содержит как сертификат, так и закрытый ключ?


person Hugh Darling    schedule 27.10.2010    source источник


Ответы (1)


Вот что вам нужно:

InputStream inStream = new FileInputStream("c:/certificate.p12");

KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(inStream, "password".toCharArray());  

String alias = ks.aliases().nextElement();
certificate = (X509Certificate) ks.getCertificate(alias);
person WellieeGee    schedule 10.11.2010
comment
Это предполагает, что в хранилище ключей есть только один сертификат, в противном случае вам нужно будет указать псевдоним напрямую. - person WellieeGee; 10.11.2010
comment
Привет, Любая идея, как можно сделать это для Blackberry? Для Java в Blackberry класс KeyStore не имеет доступного метода getInstance(String). Я разместил отдельный вопрос для этого. stackoverflow.com/questions/13151134/ - person Gopalakrishnan Subramanian; 31.10.2012
comment
Просто не забудьте использовать классы java.security.* вместо javax.security.* - person Diego Plentz; 20.06.2014