Преимущества функции подписания приложений в Google Play. Она не только защищает ваши ключи от потери или взлома, но и позволяет использовать улучшения для наборов Android App Bundle (.aab). Если вы разрешите Google подписывать оптимизированные APK-файлы, созданные из наборов App Bundle, то получите доступ к таким полезным сервисам, как автоматическая защита и автоматический перевод интерфейса с помощью моделей Gemini. Для разработчиков игр открываются дополнительные возможности, такие как Play Games Sidekick, запуск игры во время скачивания и бесплатные пробные периоды.
Настроить функцию подписания приложений в Google Play может только владелец аккаунта.
Основные понятия
Если вы используете функцию подписания приложений в Google Play, то работаете с двумя разными ключами. Чтобы избежать проблем с аутентификацией при работе со сторонними API, важно понимать разницу между этими ключами и их технические форматы.
| Тип ключа | У кого находится ключ | Технические сведения и назначение |
|
Ключ загрузки |
Вы (храните его в надежном месте) |
|
| Ключ подписи приложения |
Google Play |
|
| Защищенный от квантовых атак | Google Play |
|
Примечание. В целях безопасности ключ загрузки и ключ подписи приложения должны быть разными.
Как Google подписывает приложение. Создавая и подписывая ваши APK-файлы ключом подписи приложения, Google использует apksigner, чтобы добавить в манифест приложения метки com.android.stamp.source и com.android.stamp.type. Эти метки позволяют безопасно отслеживать, кто подписал APK-файлы.
Как настроить функцию подписания приложений в Google Play
Процесс настройки зависит от того, публикуете ли вы новое приложение или переносите существующее.
Для новых приложений
- Создайте новое приложение. Оно будет автоматически зарегистрировано в программе защищенной от квантовых атак гибридной подписи с использованием ключей, сгенерированных Google. Также будет создан отдельный классический ключ, который используется в блоках с данными подписей на устройствах с Android 16 и более ранних версий.
- Создайте ключ загрузки. Сгенерируйте хранилище ключей для подписания наборов App Bundle. Вы можете сделать это в Android Studio или использовать утилиту Java keytool в командной строке.
- Загрузите набор App Bundle. Откройте Play Console и подготовьте новый выпуск. По умолчанию при загрузке набора App Bundle приложение автоматически регистрируется в программе защищенной от квантовых атак гибридной подписи с использованием ключей, сгенерированных Google.
- Измените ключ подписи приложения (необязательно). Опытные разработчики, которые хотят управлять собственным ключом, могут изменить значение по умолчанию до публикации рабочей версии или начала открытого тестирования. Для этого выберите Защищено Google Play > Распространение в Google Play > Подписание приложений в Google Play и нажмите Изменить ключ подписи приложения. После этого вы сможете:
- Использовать тот же ключ, что и для другого приложения в этом аккаунте разработчика.
- Предоставлять копию ключа подписи приложения (следуйте инструкциям).
Для существующих приложений
Если вы управляете собственными ключами и загружаете 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. К этим ключам относятся новый классический и PQC-ключи, работающие на новых устройствах, а также классический ключ для старых устройств.
- Вставьте цифровые отпечатки в консоль поставщика API, например Google Cloud.
Совет. Если вы используете ссылки на приложения для Android, добавьте эти отпечатки в файл assetlinks.json.
Как управлять ключами
Как обновить ключ подписи приложения
Если ваш ключ подписи приложения был взломан или вам нужен более криптостойкий ключ, вы можете запросить его ежегодное обновление для всех установок на устройствах с Android 17 (API уровня 37) и более поздними версиями.
Как работает принудительное применение обновленного ключа в разных версиях Android
- Android 17 (API уровня 37) и более поздние версии. Платформа Android принудительно применяет обновленный гибридный ключ, устойчивый к квантовым атакам. Подробнее о схеме подписания APK версии 3.2…
- Android 13 (API уровня 33) — Android 16 (API уровня 36). Платформа Android принудительно применяет последний классический ключ. Подробнее о схеме подписания APK версии 3.1…
- Android 7 (API уровня 24) — Android 12 (API уровня 32). Платформа Android не применяет новый ключ принудительно и по-прежнему распознает последний классический ключ. Однако если пользователь не отключит эту функцию, Google Play Защита будет выполнять дополнительную проверку, чтобы убедиться, что обновления приложения подписаны последним классическим ключом.
Важно!
- Обмен данными. На устройствах с Android S (API уровня 32) и более ранними версиями обновленный ключ не используется принудительно. Поэтому если вы применяете один и тот же ключ в нескольких приложениях для обмена данными, то на этих устройствах при работе таких функций, как обмен специальными разрешениями, будет распознаваться только устаревший ключ.
Как обновить ключ
- Выберите Защищено Google Play > Распространение в Google Play > Перейти к подписанию приложений в Google Play.
- В разделе "Ключ подписи приложения" нажмите Обновить ключ.
- Выберите один из вариантов:
- Разрешить Google Play создать новый ключ подписи приложения (рекомендуется).
- Использовать ключ подписи другого приложения из этого аккаунта разработчика.
- Предоставить копию ключа подписи приложения (следуйте инструкциям).
- Нажмите Сохранить.
- Зарегистрируйте новые отпечатки ключа у поставщиков API. Если в вашем приложении используется защищенная от квантовых атак гибридная подпись, зарегистрируйте отпечатки двух новых ключей: нового классического и PQC-ключей.
Как запросить сброс ключа загрузки
Если вы потеряли ключ загрузки или подозреваете, что он был взломан, вы не потеряете доступ к приложению.
- Создайте новый ключ загрузки в Android Studio.
- Экспортируйте сертификат в формате PEM:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
Дополнительную информацию об инструменте keytool и путях к хранилищу ключей можно найти в руководстве по подписи приложений в Android Studio. - После того как вы создадите PEM-файл, отправьте запрос на сброс в Play Console.
- Выберите Защищено Google Play > Защита Google Play > Управление функцией подписания приложений.
- В разделе Сертификат ключа загрузки нажмите Отправить запрос на сброс ключа загрузки.
- Укажите причину сброса.
- Загрузите файл
upload_certificate.pemи нажмите Запросить.
Рекомендации и альтернативные способы распространения
- Безопасность. Защитите доступ к Play Console, включив двухэтапную аутентификацию для всех пользователей.
- Улучшения для наборов App Bundle. Зарегистрировавшись в программе подписания приложений в Google Play, вы сможете использовать улучшения, которые мы предлагаем для наборов App Bundle. Чтобы применить улучшения, при создании нового выпуска внесите необходимые изменения, а затем загрузите новый набор App Bundle.
- Распространение за пределами Google Play. Если вы распространяете приложение через другие магазины и хотите использовать один и тот же ключ подписи, у вас есть два варианта. 1) Вы можете разрешить Google создать ключ подписи приложения и скачать подписанный универсальный APK из Play Console или Play Developer API, чтобы распространять его в других магазинах. В Play Console перейдите в раздел Тестирование и выпуск > Последние выпуски и наборы, выберите набор App Bundle и нажмите на вкладку Скачанные файлы. 2) Вы также можете создать ключ подписи приложения, который хотите использовать во всех магазинах приложений, и передать его копию в Google при настройке функции подписания приложений в Google Play. Подробнее об обновлении приложений…
- Тестирование. Чтобы проверить, что именно Google Play будет отправлять пользователям, используйте внутренний доступ к приложению. Также вы можете скачать APK-файлы для определенных устройств из App Bundle Explorer и установить их локально с помощью команды adb install-multiple *.apk.
- Схема подписания APK версии 4. Функция подписания приложений в Google Play автоматически использует эту схему для поддерживаемых приложений, чтобы оптимизировать их распространение на устройствах с Android 11 и более поздних версий. Никаких действий с вашей стороны не требуется. Это исключает все приложения, использующие защищенную от квантовых атак гибридную подпись, которая пока несовместима со схемой подписания версии 4. Подробнее о технических преимуществах можно узнать из документации по схеме подписания APK версии 4.
Проекты Google Cloud, размещенные на вашем сервере
Если у вас есть особые требования к безопасности (например, использование ключей OEM), вы можете зарегистрировать проект Google Cloud, размещенный на вашем сервере, в функции подписания приложений с помощью Play Developer API.
Это нестандартная конфигурация, и мы не рекомендуем ее использовать. Если проект размещен на вашем сервере, вы будете нести полную ответственность за подписание приложений,
- а Google Play не сможет выполнять такие важные действия, как аварийное восстановление.
- Google не может сгенерировать повторно или изменить существующий выпуск. Если с ним возникнут ошибки, вам понадобится загрузить новый.
- В этой конфигурации могут быть недоступны расширенные оптимизации, некоторые улучшения Google Play и функции безопасности, например гибридная подпись, устойчивая к квантовым атакам.
- Сгенерируйте или импортируйте ключи подписи в Cloud KMS и выберите макрорегион США. Далее следуйте документации по импорту ключей KMS.
- Чтобы изменить ключ подписи, используйте метод enrollApp. Это можно сделать только до выпуска рабочей версии или начала открытого тестирования.
- Чтобы обновить ключ подписи после публикации, используйте метод rotateAppSigningKey.
- Предоставьте клиенту или сервисному аккаунту, который проходит аутентификацию с помощью Google Play Developer API, следующие роли IAM:
- Убедитесь, что ваша квота достаточно велика для проведения криптографических операций. Для asymmetric_requests мы рекомендуем увеличить ее как минимум до 350 запросов в секунду.
- Чтобы узнать, как используются ключи подписи, включите журнал аудита в проекте Cloud KMS.