Есть ли какие-нибудь Java API для преобразования сертификата из формата «Дер» в формат PKCS # 12
-
09-10-2019 - |
Вопрос
Мне нужно преобразовать сертификат из формата DER в формат PKCS # 12. Я знаю, что могу сделать это, используя команду openssl. Я ищу Java API / класс, который может сделать эту работу. Любая помощь будет оценена.
Решение
Вы можете попробовать загрузить контейнер 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);
// ...
}
}
Другие советы
Это может преобразовать PKCS из PEM
openssl pkcs12 -export -in pem-certificate-and-key-file -out pkcs-12-certificate and-key-file
Итак, давайте сначала преобразом свой PEM в PEM
openssl dsa -inform PEM|DER -outform DER|PEM -in pem-file|der-file -out der-file|pem-file
Насколько я понимаю, PEM - это просто в кодированной строке BASE64 из содержимого DER с соответствующим линиям заголовка и нижнего колонтитула. Для преобразования в Base64 вы можете использовать javax.mail.internet.MimeUtility
Например.
Я получил много пробега из Портека.
Если вы должны сделать это программно, большая часть того, что вам нужно, находится в классе ключевого магазина в Java. Что касается удобства пользователя, ну, это довольно селективно о своих друзьях. Откройте магазин, добавь к нему, сохраните его. Если вам нужны сертифицированные цепи, это будет немного сложнее.
Что касается извлечения сертификата от кодирования DER, см. X509Certificate Javadoc. Особенно ссылки на сертификат капитала.