Мне нужно преобразовать сертификат из формата DER в формат pkcs#12. Я знаю, что могу сделать это с помощью команды openssl. Я ищу java API/класс, который может выполнять эту работу. Любая помощь будет оценена.
Есть ли какой-либо java API для преобразования сертификата из формата «DER» в формат pkcs # 12
Ответы (4)
Вы можете попробовать загрузить контейнер PKCS#12 в качестве хранилища ключей:
java.security.KeyStore ks = java.security.KeyStore.getInstance("PKCS12");
ks.load(new java.io.FileInputStream("yourStore.p12"), "yourPassword".toCharArray());
После загрузки вы можете перечислить элементы внутри контейнера:
for(Enumeration enum = ks.aliases(); enum.hasMoreElements(); ) {
String alias = (String) enum.nextElement();
System.out.println("@:" + alias);
if (ks.isKeyEntry(alias)) {
System.out.println("return PrivateKey");
PrivateKey pk = (PrivateKey) ks.getKey(alias, password);
// ...
}
}
Насколько я понимаю, PEM — это просто закодированная в Base64 строка содержимого DER с соответствующими строками заголовка и нижнего колонтитула. Например, для преобразования в Base64 вы можете использовать javax.mail.internet.MimeUtility
.
Это может конвертировать pkcs из PEM
openssl pkcs12 -export -in pem-certificate-and-key-file -out pkcs-12-certificate and-key-file
Итак, давайте сначала конвертируем ваш DER в PEM.
openssl dsa -inform PEM|DER -outform DER|PEM -in pem-file|der-file -out der-file|pem-file
Я получил много миль от Portecle.
Если вам нужно сделать это программно, большая часть того, что вам нужно, находится в классе KeyStore в Java. Что касается удобства для пользователя, то он довольно избирательно относится к своим друзьям. Откройте магазин, добавьте в него, сохраните его. Если вам нужны цепочки сертификатов, это будет немного сложнее.
Что касается получения сертификата из кодировки DER, см. X509Certificate javadoc. Особенно ссылки на CertificateFactory.