Преобразование хранилища ключей Java в формат PEM - PullRequest
119 голосов
/ 17 марта 2009

Я пытаюсь преобразовать файл хранилища ключей Java в файл PEM с помощью приложений keytool и openssl. Но я не мог найти хороший способ сделать преобразование. Есть идеи?

Вместо преобразования хранилища ключей непосредственно в PEM я попытался сначала создать файл PKCS12, а затем преобразовать в соответствующий файл PEM и хранилище ключей. Но я не мог установить соединение, используя их. (Обратите внимание, что мне просто нужен PEM-файл и файл Keystore для реализации защищенного соединения. Нет ограничений, таких как «Запуск из файла хранилища ключей Java». :) Поэтому в моем случае приемлемо использование других форматов)

Но метод прямого преобразования из jks в pem предпочтительнее.

Ответы [ 13 ]

0 голосов
/ 05 июня 2018

Сначала сбросьте хранилище ключей из JKS в PKCS12

1. keytool -importkeystore -srckeystore ~ ​​/ .android / debug.keystore -destkeystore interval.p12 -srcstoretype JKS -deststoretype PKCS12

Дамп нового файла pkcs12 в pem

  1. openssl pkcs12 -inmediate.p12 -nodes -out interval.rsa.pem

У вас должен быть как сертификат, так и закрытый ключ в формате pem. Разделите их. Поместите часть между «НАЧАТЬ СЕРТИФИКАТ» и «КОНЕЦ СЕРТИФИКАТ» в cert.x509.pem Поместите часть между «BEGIN RSA PRIVATE KEY» и «END RSA PRIVATE KEY» в private.rsa.pem Преобразуйте закрытый ключ в формат pk8, как ожидается, signapk

3. openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -информ PEM -out private.pk8 -nocrypt

0 голосов
/ 10 марта 2018

сначала создайте файл хранилища ключей как

C: \ Program Files \ Android \ Android Studio \ jre \ bin> keytool -keystore androidkey.jks -genkeypair -alias androidkey

Введите пароль хранилища ключей:
Введите новый пароль еще раз:
Ваше имя и фамилия? Неизвестно: Имя Фамилия
Как называется ваша организационная единица? Неизвестно: Мобильная разработка
Как называется ваша организация? Неизвестно: название вашей компании
Как называется ваш город или населенный пункт? Как называется ваш штат или провинция?
Что такое двухбуквенный код страны для данного устройства? Неизвестный: IN // нажмите ввод

Теперь он попросит подтвердить

Является ли CN = FirstName LastName, OU = Mobile Development, O = название вашей компании, L = CityName, ST = StateName, C = IN, верно? [нет]: да

Введите пароль для ключа (ВОЗВРАТ, если совпадает с паролем хранилища ключей): нажмите Enter, если вы хотите использовать тот же пароль

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

C: \ Program Files \ Android \ Android Studio \ jre \ bin> keytool -export -rfc -alias androidkey -файл android_certificate.pem -keystore androidkey.jks
Введите пароль хранилища ключей:
Сертификат хранится в файле

0 голосов
/ 10 марта 2017

Попробуйте Keystore Explorer http://keystore -explorer.org /

KeyStore Explorer - это замена графического интерфейса с открытым исходным кодом для утилит командной строки Java keytool и jarsigner. Это также делает openssl / pkcs12.

...