Преимущества функции подписания приложений в Google Play. Подписание приложений в Google Play не только защищает ваши ключи от потери или взлома, но и позволяет использовать улучшения Google Play для наборов Android App Bundle (.aab). Если вы разрешите Google подписывать оптимизированные APK-файлы, созданные из наборов App Bundle, то получите доступ к таким полезным сервисам, как автоматическая защита и автоматический перевод интерфейса с помощью моделей Gemini. Игры получают доступ к дополнительным автоматическим сервисам, таким как Play Games Sidekick, запуск игры во время скачивания и бесплатные пробные периоды для платных игр.
Чтобы настроить функцию подписания приложений в Google Play, вы должны быть владельцем аккаунта или иметь разрешение на выпуск рабочей версии, исключение устройств и использование функции подписания приложений. Кроме того, вам необходимо принять Условия использования.
Основные понятия
При использовании функции подписания приложений в Google Play вы работаете с двумя разными ключами. Понимание разницы между ними и их техническими форматами необходимо, чтобы избежать проблем с аутентификацией при работе со сторонними API.
| Тип ключа | У кого находится ключ | Технические сведения и назначение |
|
Ключ загрузки |
Вы (храните его в надежном месте) |
|
| Ключ подписи приложения |
Google Play |
|
Примечание. В целях безопасности ключ загрузки и ключ подписи приложения должны быть разными.
Как Google подписывает ваше приложение. Когда Google создает и подписывает ваши APK-файлы с помощью ключа подписи приложения, он использует apksigner, чтобы добавить в манифест приложения две метки (com.android.stamp.source и com.android.stamp.type). Эти метки позволяют безопасно отслеживать, кто подписал APK-файлы.
Как настроить функцию подписания приложений в Google Play
Процесс настройки зависит от того, публикуете ли вы новое приложение или переносите существующее.
Для новых приложений
- Создайте ключ загрузки. Сгенерируйте хранилище ключей для подписывания наборов App Bundle. Вы можете сгенерировать его в Android Studio или использовать утилиту Java keytool в командной строке.
- Загрузите набор App Bundle. Откройте Play Console и подготовьте новый выпуск. По умолчанию при загрузке набора App Bundle автоматически создается криптостойкий 4096-битный ключ RSA для управления приложением и его защиты. Более 90 % новых приложений используют этот рекомендуемый вариант. Чтобы его настроить, не нужно выполнять никаких дополнительных действий.
- Измените ключ подписи приложения (необязательно). Опытные разработчики, которые хотят управлять собственным ключом, могут изменить значение по умолчанию. Для этого нажмите Изменить ключ подписи в разделе Целостность приложения на странице выпуска или перейдите в раздел Защищено Google Play > Распространение в Google Play > Перейти к подписанию приложений в Google Play. Затем вы можете:
- Использовать тот же ключ, что и для другого приложения в этом аккаунте разработчика.
- Предоставить копию ключа подписи приложения. Сначала скачайте открытый ключ шифрования Google из Play Console. Затем с помощью инструмента PEPK (Play Encrypt Private Key) зашифруйте и загрузите существующий ключ RSA (2048 бит или выше) из любого хранилища. Вы можете скачать скомпилированный инструмент или его исходный код непосредственно из Play Console, чтобы проверить или скомпилировать его самостоятельно.
Для существующих приложений
Если вы управляете собственными ключами и загружаете APK-файлы, вы можете перейти на подписание приложений в Google Play, чтобы использовать наборы App Bundle и улучшения Google Play.
- В Play Console выберите Защищено Google Play > Распространение в Google Play > Перейти к подписанию приложений в Google Play.
- Примите Условия использования, если вы ещё этого не сделали.
- Передайте копию оригинального ключа. Скачайте инструмент PEPK и следуйте единым пошаговым инструкциям, чтобы зашифровать и загрузить существующий ключ подписи приложения из любого хранилища.
Как зарегистрировать ключ у поставщиков API
Если в вашем приложении используются API (например, Google Карт, OAuth или Facebook Login), эти сервисы выполняют аутентификацию приложения с помощью отпечатка ключа подписи приложения.
Поскольку Google подписывает финальный APK-файл, вам нужно зарегистрировать у поставщиков API цифровой отпечаток ключа подписи приложения, который хранится у Google, а не только локальный ключ загрузки.
- Перейдите в раздел Защищено Google Play > Распространение в Google Play > Перейти к подписи приложения в Google Play.
- Прокрутите экран до раздела Ключ подписи приложения.
- Скопируйте нужные отпечатки (SHA-1 или SHA-256).
- Вставьте отпечатки в консоль поставщика API (например, Google Cloud Console).
Совет. Если вы используете ссылки на приложения для Android, добавьте эти отпечатки в файл assetlinks.json.
Как управлять ключами
Как обновить ключ подписи приложения
Если ваш ключ подписи приложения был взломан или вам нужен более криптостойкий ключ, каждый год вы можете запросить его обновление для всех установок на устройствах с Android N (API уровня 24) и более поздними версиями.
Как работает принудительное применение обновленного ключа в разных версиях Android:
- Android T (API уровня 33) и более поздние версии. Платформа Android строго контролирует использование обновленного ключа.
- Android N (API уровня 24) – Android S (API уровня 32). Платформа Android не применяет обновленный ключ принудительно и по-прежнему распознает устаревший ключ подписи. Однако Google Play Защита выполняет дополнительную проверку, чтобы убедиться, что обновления приложения подписаны обновленным ключом (если пользователь не отключил эту функцию).
Важно!
- Обмен данными. На устройствах с Android S (API уровня 32) и более ранними версиями обновленный ключ не используется принудительно. Поэтому если вы применяете один и тот же ключ в нескольких приложениях для обмена данными, то на этих устройствах будет распознаваться только устаревший ключ при работе таких функций, как обмен специальными разрешениями.
Как обновить ключ:
- Выберите Защищено Google Play > Распространение в Google Play > Перейти к подписанию приложений в Google Play.
- В разделе "Ключ подписи приложения" нажмите Обновить ключ.
- Выберите один из вариантов:
- Разрешить Google Play создать новый ключ подписи приложения (рекомендуется).
- Использовать ключ подписи другого приложения из этого аккаунта разработчика.
- Предоставить копию ключа подписи приложения (следуйте инструкциям).
- Если вы предоставляете собственный ключ, создайте и загрузите подтверждение смены ключа с помощью инструмента apksigner (входит в Android SDK Build Tools). Подробную информацию о флагах, используемых в этом примере, можно найти в документации по инструменту apksigner командной строки:
- apksigner
rotate --out /path/to/new/file --old-signer --ks old-signer-jks --set-rollback true --new-signer --ks new-signer-jks --set-rollback true
- apksigner
- Нажмите Сохранить и зарегистрируйте новые отпечатки ключей у поставщиков API.
Как запросить сброс ключа загрузки
Если вы потеряли ключ загрузки или подозреваете, что он был взломан, вы не потеряете доступ к приложению.
- Создайте новый ключ загрузки в Android Studio.
- Экспортируйте сертификат в формате PEM:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
(Дополнительную информацию об инструменте keytool и путях к хранилищу ключей можно найти в руководстве по подписи приложений в Android Studio). - Владелец аккаунта должен запросить сброс ключа загрузки, заполнив форму в Справочном центре Play Console.
- Когда будет предложено, загрузите файл
upload_certificate.pem.
Примечание. Сброс ключа загрузки не затрагивает ключ подписи приложения и не влияет на пользователей.
Рекомендации и альтернативные способы распространения
- Безопасность. Защитите доступ к Play Console, включив двухэтапную аутентификацию для всех пользователей.
- Улучшения Google Play. Зарегистрировавшись в программе подписания приложений в Google Play, вы сможете использовать улучшения, которые мы предлагаем для наборов App Bundle. Чтобы получить улучшения, сначала внесите необходимые изменения при создании нового выпуска, а затем загрузите новый набор App Bundle.
- Распространение за пределами Google Play. Если вы распространяете приложение через другие магазины и хотите использовать один и тот же ключ подписи, у вас есть два варианта. Вы можете разрешить Google сгенерировать ключ подписи приложения и скачать подписанный универсальный APK-файл из последних выпусков и наборов для распространения в других магазинах (перейдите в раздел Тестирование и публикация > Последние выпуски и наборы, выберите набор App Bundle и нажмите на вкладку Скачанные файлы). Также вы можете сгенерировать ключ подписи приложения, который будете использовать во всех магазинах, и загрузить его копию в Google при настройке функции подписания приложений в Google Play.
- Тестирование. Чтобы проверить, что именно Google Play будет отправлять пользователям, воспользуйтесь внутренним доступом к приложению. Также можно скачать APK-файлы для определенных устройств из App Bundle Explorer и установить их локально с помощью команды adb install-multiple *
.apk. - Схема подписания APK версии 4. Функция подписания приложений в Google Play автоматически использует эту схему для поддерживаемых приложений, чтобы оптимизировать их распространение на устройствах с Android 11 и более поздних версий. Никаких действий с вашей стороны не требуется. Подробнее о технических преимуществах можно узнать из документации по схеме подписания APK версии 4.
- Проекты Google Cloud, размещенные на вашем сервере. Если у вас есть особые требования к безопасности (например, использование ключей OEM), вы можете зарегистрировать проект Google Cloud, размещенный на вашем хостинге, в программе "Подписание приложений в Google Play" с помощью Play Developer API. Примечание. Это нестандартная конфигурация, которую мы не рекомендуем использовать. Если проект размещен на вашем сервере, вы будете нести полную ответственность за подписание приложений, а Google Play не сможет выполнять важные функции, например аварийное восстановление.