Google Play App Разрешение на подпись и уровень подписи - PullRequest
3 голосов
/ 30 апреля 2019

Я пытаюсь использовать разрешение на уровне подписи для безопасного обмена данными между двумя приложениями. К сожалению, даже если я использую один и тот же upload key для входа в оба приложения, Google Play меняет свою подпись после загрузки в магазин. Из-за этого мои приложения не могут общаться. Как войти в два приложения с одним и тем же ключом / сертификатом, если мы используем подпись в приложении Google Play?

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Как вы узнали, совместное использование одного и того же ключа загрузки не означает, что ключ подписи приложения также будет предоставлен.Однако есть способ сделать это при первой регистрации в App Signing by Play: в разделе «Дополнительно» на карточке регистрации есть возможность повторно использовать ключ подписи приложения другого приложения, уже зарегистрированного в App Signing.

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

Это описано на этой странице в разделе "Присоединиться к приложению"подписка через Google Play ">" Новые приложения ".

Надеюсь, это поможет,

1 голос
/ 02 мая 2019

Я провел небольшое исследование и хотел бы объяснить здесь, как Подпись приложения Google Play работает и как использовать ее с разрешением уровня подписи.

Прежде всего, если мы используем Google Play App Signing, мы фактически используем две клавиши для входа в наше приложение. Первый - Ключ загрузки , второй - Ключ подписи приложения . Оба сгенерированы аналогичным образом из Android Studio, и мы можем использовать ключ загрузки из одного приложения в качестве ключа подписи приложения для другого приложения.

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

Весь механизм выглядит так:

Google Play app signing mechanism

Источник изображения (Официальная документация для подписи приложений)

Как вы можете видеть на изображении, мы используем Ключ загрузки , чтобы загрузить наше приложение в Google Play, а затем Google Play удаляет нашу подпись и выполняет вход в наше приложение с другим ключом. Это полезно, потому что если мы потеряем наш ключ загрузки, мы не потеряем возможность загрузить наше приложение (мы можем попросить Google использовать новый ключ загрузки). Более того, Google Play теперь может разбивать наше приложение на более мелкие части и распространять его независимо, и каждая часть будет подписана с помощью нашего ключа подписи приложения ( Пакеты приложений Android ). Недостатком этого решения является то, что приложение, которое мы загружаем в магазин, имеет другую подпись, чем приложение, которое мы загружаем из Google Play. Это очень проблематично, особенно если мы используем разрешение уровня подписи в нашем приложении. Кроме того, это также проблема, когда мы хотим загрузить наше приложение в магазин, отличный от Google Play.

Используя разрешение на уровне подписи, мы можем безопасно обмениваться данными между двумя приложениями ( пример использования ), но есть одно главное условие - оба приложения должны иметь одинаковую подпись. Даже если мы используем один и тот же Ключ загрузки , это не означает, что наши приложения будут иметь одинаковые подписи, поскольку ключи, используемые Google Play, могут отличаться. На практике это означает, что когда вы тестируете выпускную версию своего приложения, все выглядит отлично, но после загрузки его в Google Play это не работает (эта проблема затрагивает все функции, которые зависят от подписи приложения - логин на Facebook, обнаружение тампера).

Итак, как использовать один и тот же ключ для двух приложений, когда мы используем Google Play App Signing? Когда мы создаем новое приложение в Google Play и пытаемся создать первый выпуск в производство, Google Play спросит:

enter image description here И тогда в дополнительных параметрах мы можем найти:

enter image description here

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

Что делать, если мы не можем этого сделать, но мы хотим использовать безопасный обмен данными между двумя приложениями? Мы можем проверить подпись, которая не совпадает вручную, и попытаться предотвратить атаку изнутри нашего приложения, которое предоставляет данные. Это не так безопасно, как первое решение, но более безопасно, чем ничего не делать :)

...