Как преобразовать файл .pfx в ключевой знак с закрытым ключом?

StackOverflow https://stackoverflow.com/questions/4217107

Вопрос

Мне нужно подписать приложение для Android (.apk).
у меня есть .pfx файл. Я преобразовал его в .cer Файл через Internet Explorer, а затем преобразован .cer к .keystore используя keytool. Тогда я пытался подписать .apk с Джасиницей, но он говорит, что. Keystore не содержит закрытый ключ.

Что я делаю не так?

Это было полезно?

Решение

Использование JDK 1.6 или позже

Это было отмечено Джастином в комментариях ниже того, что только KeyTool способно делать это, используя следующую команду (хотя только в JDK 1.6 и позже):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

Использование JDK 1.5 или ниже

OpenSSL может сделать все это. Этот ответ на Jguru это лучший метод, который я нашел до сих пор.

Во-первых, убедитесь, что у вас есть Openssl установлены. Многие операционные системы уже установлены, как я нашел с Mac OS X.

Следующие два команда преобразуют файл PFX в формат, который можно открыть как магазин Keava java pkcs12:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

Обратите внимание, что имя, представленное во втором команде, является псевдоним вашей клавиши в новом магазине ключей.

Вы можете проверить содержимое магазина ключей с использованием утилиты Java KeyTool со следующей командой:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

Наконец, если вам нужно, чтобы вы могли преобразовать это в магазин клавиши JKS, импортировав магазин для ключей, созданный выше в новый магазин ключей:

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS

Другие советы

JARSIGNER может использовать ваш файл PFX в качестве ключей для подписания банки. Убедитесь, что ваш файл PFX имеет закрытый ключ и цепочка сертификации при его экспорте. Нет необходимости преобразовать в другие форматы. Хитрость - получить Псевдоним вашего файла PFX:

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias

Как только у вас есть псевдоним, подписание легко

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"

Приведенные выше команды будут предлагать вам пароль, который вы указали в экспорте PFX. Если вы хотите, чтобы ваш пароль тусоваться в чистом тексте, используйте -СТОВАТЬСЯ переключаться до -Кристор выключатель

После подписания восхищайтесь своей работой:

jarsigner.exe -verify -verbose -certs  yourjarfile

я нашел это Страница, которая говорит вам, как импортировать PFX в JKS (магазин Keava Key):

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME

Ваш файл PFX должен содержать закрытый ключ в нем. Экспортируйте закрытый ключ и сертификат непосредственно из файла PFX (например, используя OpenSSL) и импортируйте их в свой клавиш Java.

Редактировать

Дальнейшая информация:

  • Скачать OpenSSL для Windows здесь.
  • Экспорт закрытый ключ: openssl pkcs12 -in filename.pfx -nocerts -out key.pem
  • Экспорт сертификата: openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
  • Импортировать закрытый ключ и сертификат в Java Keystore с использованием keytool.

Джастин (выше) является точным. Тем не менее, имейте в виду, что в зависимости от того, кто вы получаете сертификат от (Intermediate CA, CA, вовлечены или нет) или как создан / экспортируется PFX, иногда они могут отсутствовать цепочку сертификата. После импорта у вас будет сертификат типа PlachKeeEntry, но с цепочкой длиной 1.

Чтобы исправить это, есть несколько вариантов. Устойчивый вариант в моей голове - это импортировать и экспортировать файл PFX в IE (выбирая опцию включения всех сертификатов в цепочке). Процесс импорта и экспорта сертификатов в IE должен быть очень легко и хорошо документирован в другом месте.

После экспортировки импортируйте ключ в качестве Джастина, указанного выше. Теперь у вас будет ключевой знак с сертификатом типа PownentkeeEntry и с длиной цепочки сертификата более 1.

Очень определенные клиенты на основе веб-службы .NET (невозможно установить доверительные отношения), если вы не сделаете выше.

Если вы работаете с JDK 1.5 или ниже утилиты KeyTool не будут иметь -importkeystore Опция (см JDK 1.5 Документация Keytool) и решение MIKED будет доступно только путем передачи .pfx на машине с более новым JDK (1,6 или выше).

Другой вариант в JDK 1.5 или ниже (если у вас есть продукт Oracle Weblogic), следует следовать инструкциям из этого документа Oracle: Использование форматов сертификата PFX и PEM с ключевыми магазинамиОтказ Это описывает преобразование в .pem формат, как извлечь сертификаты информацию из этого текстового формата и импортировать его в .jks формат с java utils.ImportPrivateKey Утилита (это утилита, включенная в Weblogic Product).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top