Как устройства Android получают открытые ключи разработчиков?

Система Android требует, чтобы все установленные приложения были подписаны цифровой подписью сертификатом, закрытый ключ которого находится у разработчика приложения. Как конкретно открытый ключ распространяется на клиентские устройства Android? Содержится ли открытый ключ в apk, когда разработчики выпускают приложение? Если да, где хранится ключ?

Или Android market, например Google play, хранит список идентификаторов разработчиков в сочетании с соответствующим открытым ключом и передает правый ключ на клиентские устройства при загрузке приложения?

Есть ли какие-либо документы, передающие эту информацию?

Большое спасибо за любые материалы.

4 ответа

Решение

Открытый ключ распространяется в файле apk. Если вы разархивируете файл apk, вы можете найти там специальную папку с именем META-INF, в которой содержится вся информация о подписи. По сути, вам нужно изучить файлы с расширениями *.RSA и *.DSA, которые содержат подпись пакета вместе с открытым ключом.

Вы можете прочитать эти две статьи ( один, два), чтобы понять процесс

http://developer.android.com/google/play/licensing/adding-licensing.html

Некоторые части ссылки решат ваш вопрос. Вставьте ваш открытый ключ для лицензирования.

Для каждого приложения служба Google Play автоматически генерирует 2048-битную пару открытого / секретного ключей RSA, которая используется для лицензирования и биллинга в приложении. Пара ключей однозначно связана с приложением. Несмотря на то, что пара ключей связана с приложением, она не совпадает с ключом, который вы используете для подписи своих приложений (или производных от него).

Консоль разработчика Google Play предоставляет открытый ключ для лицензирования любому разработчику, выполнившему вход в Консоль разработчика, но сохраняет закрытый ключ от всех пользователей в безопасном месте. Когда приложение запрашивает проверку лицензии для приложения, опубликованного в вашей учетной записи, сервер лицензирования подписывает ответ лицензии, используя закрытый ключ пары ключей вашего приложения. Когда LVL получает ответ, он использует открытый ключ, предоставленный приложением, для проверки подписи лицензионного ответа.

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

Перейдите в консоль разработчика Google Play и выполните вход. Убедитесь, что вы вошли в учетную запись, с которой публикуется (или будет опубликовано) лицензируемое вами приложение. На странице сведений о приложении найдите ссылку "Службы и API" и щелкните ее. На странице "Службы и API" найдите раздел "Лицензирование и оплата в приложении". Ваш открытый ключ для лицензирования указан в поле "Ваш лицензионный ключ для данного приложения". Чтобы добавить открытый ключ в ваше приложение, просто скопируйте / вставьте строку ключа из поля в ваше приложение в качестве значения строковой переменной BASE64_PUBLIC_KEY. Когда вы копируете, убедитесь, что вы выбрали всю строку ключа, не пропуская никаких символов.

Вот пример из примера приложения LVL:

public class MainActivity extends Activity {
    private static final String BASE64_PUBLIC_KEY = "MIIBIjANBgkqhkiG ... "; //truncated for this example
...
}

Вы должны загрузить их в игровой магазин перед публикацией.

Затем он сверяется с подписью вашего apk: http://developer.android.com/google/play/licensing/adding-licensing.html


Если вы говорите о ключе для проверки приложений при установке: вы можете использовать любой ключ, чтобы подписать приложение и установить его через adb. Но вам придется использовать тот же ключ, чтобы переустановить приложение. В этом случае ключи не проверяются на соответствие глобальному репо, как в Google Play, они просто проверяются локально.

Что касается тестирования, то все немного по-другому, я полагаю, что это происходит из-за взаимодействия инструментария и тестируемого кода, они должны выполняться в одном и том же процессе, поэтому, если вы устанавливаете тестовый пакет приложения с отладочным сертификатом, вы можете Не устанавливайте приложение с помощью сертификата выпуска, либо устанавливайте приложение с сертификатом отладки, либо удаляете тесты.

Некоторые подробности здесь: http://developer.android.com/tools/publishing/app-signing.html

Вот пример, выполните шаги 1 - 8 в разделе "Получение сертификата". Это не просто учебник по API Google, он охватывает подписывание ключей, которое вам нужно в этом единственном разделе, который я упомянул.
Там также есть ссылка на ключи Debug и Release для разработки под Android, которая предоставляет больше информации на сайте разработки под Android.

ССЫЛКА: Ключи для подписи Android и API Google Map Key

Другие вопросы по тегам