Преобразование .keystore в .jks для подписи apk

У меня есть приложение для Android, которое я пытаюсь защитить с помощью quixxi.com, однако мне нужно снова подписать приложение. Но для этого он должен использовать файлы .jks, но мое хранилище ключей - .keystore

Я использую Xamarin.Android на С# с Visual Studio 2017.

Есть ли способ обойти это?


person Ciaran    schedule 19.04.2018    source источник


Ответы (1)


Если вы используете Java keystone для подписи своих приложений Android (на основе Xamarin или нет), то вероятность того, что XXX.keystore, который вы используете для подписи ваших Xamarin.Android приложений, составляет 99,999%, уже находится в формате JKS, а не в формате PKCS12.

Быстрый способ проверки — выгрузить трапецеидальное искажение в формате RFC и просмотреть поле Keystore type:.

Пример:

/usr/bin/keytool -list -rfc -keystore debug.keystore |grep "Keystore type"

Выход:

Enter keystore password:

*****************  WARNING WARNING WARNING  *****************
* The integrity of the information stored in your keystore  *
* has NOT been verified!  In order to verify its integrity, *
* you must provide your keystore password.                  *
*****************  WARNING WARNING WARNING  *****************

Keystore type: JKS

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12".

Пример (без фильтрации):

/usr/bin/keytool -list -rfc -keystore sushi.keystore 

Выход:

Enter keystore password:

*****************  WARNING WARNING WARNING  *****************
* The integrity of the information stored in your keystore  *
* has NOT been verified!  In order to verify its integrity, *
* you must provide your keystore password.                  *
*****************  WARNING WARNING WARNING  *****************

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: androiddebugkey
Creation date: Aug 20, 2017
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
-----BEGIN CERTIFICATE-----
MIIDDTCCAfWgAwIBAgIEeCTY/jANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJV
~~~~
KvHIbSHVBsryiyCwPJkXP6A=
-----END CERTIFICATE-----


*******************************************
*******************************************

Если вам действительно нужно преобразовать хранилище типа PKCS12 в новый файл типа хранилища ключей JKS:

keytool -importkeystore -srckeystore somekeystore.pkcs12 -destkeystore somenewkeystore.jks -deststoretype jks
person SushiHangover    schedule 19.04.2018
comment
Где мне написать код для преобразования PKCS12 в JKS? - person Ciaran; 20.04.2018
comment
@Ciaran Что ты имеешь в виду, где? keytool — утилита командной строки - person SushiHangover; 20.04.2018
comment
есть ли возможность сделать это в визуальной студии? cmd сказал, что «keytool» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл. - person Ciaran; 20.04.2018
comment
@Ciaran нет, keytool является частью установки Java, посмотрите в C:\Program Files\Java\jdk (номер версии)\bin - person SushiHangover; 20.04.2018
comment
ой ок извините я новичок в этом, и где я могу написать строку? в командной строке? он сказал, что «keytool» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл, когда я пытался использовать командную строку - person Ciaran; 20.04.2018
comment
если вы работаете на компьютере с Windows, просто скопируйте файл debug.keystore в папку C:\Program Files\Java\#jdk_version#\bin folder, откройте окно терминала из этой папки и запустите: keytool -list -rfc -keystore debug.keystore - person Antonino; 17.09.2018