Как преобразовать файл .pfx в ключевой знак с закрытым ключом?
-
26-09-2019 - |
Вопрос
Мне нужно подписать приложение для 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).