Java конвертировать PFX в формат, который может быть импортирован в хранилище ключей по умолчанию - PullRequest
4 голосов
/ 28 января 2012

Я программно загружаю сертификат в хранилище ключей по умолчанию со следующим кодом

KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());
java.io.FileInputStream fis = new FileInputStream(keystorePath);
kStore.load(fis, new String(keystorePass).toCharArray());
fis.close();

У меня есть сертификат от третьего лица в формате pfx. Если я пытаюсь загрузить его, происходит сбой с неверным форматом.

Если я обновляюсь, чтобы использовать следующее, это работает. Но я не хочу менять код.

KeyStore keystore = KeyStore.getInstance("PKCS12");  

Как я могу преобразовать файл pfx в формат, который будет принят следующим

* * 1010

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Сертификат никогда не бывает простым.Вам нужен openssl (версия Cygwin для Windows), чтобы преобразовать файл pfx / p12 в файл pem, после чего вы можете создать сертификат из pem.Наконец, вы можете использовать программу Java keytool для преобразования сертификата в формат JKS (по умолчанию хранилище ключей).

Преобразование pfx в pem:

openssl pkcs12 -in whatever.pfx -out whatever.pem -clcerts -nokeys

Создание сертификата X509 изфайл pem:

openssl x509 -in whatever.pem -inform PEM -out whatever.crt -outform DER

Используйте Java keytool для создания JKS-файла из сертификата:

keytool -import -trustcacerts -keystore whatever.jks -storepass somepassword -noprompt -file whatever.crt -alias localhost

Обратите внимание, что -alias может быть любым уникальным именем, которое вы хотите использовать для этогозасвидетельствованоСоглашение заключается в использовании URL-адреса вашего веб-сайта.

Теперь вы должны иметь возможность загрузить файл JKS с экземпляром KeyStore в своем коде.Может быть, проще просто изменить свой Java-код на использование экземпляра PKCS12?

0 голосов
/ 29 января 2012

Если я обновляюсь, чтобы использовать следующее, это работает. Но я не хочу меняться код.

KeyStore keystore = KeyStore.getInstance ("PKCS12"); Как я могу преобразовать файл pfx в формат, который будет принят Следующий

KeyStore kStore = KeyStore.getInstance (KeyStore.getDefaultType ());

Почему бы и нет?
Формат хранилища ключей по умолчанию для Java - JKS. * * 1010

Но существуют и другие форматы, и #PKCS12 используется чаще всего.

Если вам нужно, чтобы ваше приложение было более «надежным», я бы порекомендовал не конвертировать файл, который у вас есть, в формат JKS.

Вместо этого вы можете поддерживать больше, чем JKS и, например, попробуйте тип хранилища ключей по умолчанию и в случае неудачи попробуйте #PKCS12

Я бы пошел дальше и предложил бы заменить KeyStore.getInstance(KeyStore.getDefaultType()); чем-то вроде:

KeyStore.getInstance(UserPreferences.getDefaultType());

, где пользователь выбрал файл хранилища ключей по умолчанию (может быть # PKCS12)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...