Как использовать функцию подписания приложений в Google Play

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

Важно! Чтобы использовать наборы Android App Bundle (рекомендуемый формат публикации приложений), нужно зарегистрироваться в программе подписания приложений в Google Play перед загрузкой набора App Bundle в Play Console.

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

Принципы работы

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

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

Примечание. Использовать функцию подписания приложений в Google Play необязательно. Вы можете загружать APK-файлы и управлять собственными ключами, не используя наборы App Bundle. Однако если вы потеряете доступ к хранилищу ключей или оно будет взломано, вы не сможете обновить свое приложение, и вам придется опубликовать его заново с другим названием пакета.

Описания ключей, объектов и инструментов
Условия Описание
Ключ подписи приложения

Ключ, используемый в Google Play для подписи APK-файлов, доставляемых на устройство пользователя. При регистрации в программе подписания приложений в Google Play вы можете загрузить существующий ключ подписи или позволить Google сгенерировать новый.

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

Ключ загрузки

Ключ, которым вы подписываете набор App Bundle или APK-файл перед загрузкой в Google Play. Ключ загрузки нельзя передавать никому, но при необходимости вы можете поделиться открытым сертификатом приложения. Для безопасности ключ подписи приложения и ключ загрузки должны быть разными.

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

  • Используйте ключ подписи приложения. Если при регистрации в программе вы разрешили Google сгенерировать ключ подписи приложения, ключом загрузки станет ключ, использованный вами для подписи первого выпуска приложения.
  • Используйте отдельный ключ загрузки. Если при регистрации в программе вы передали собственный ключ подписи приложения, для безопасности вы можете сгенерировать новый ключ загрузки. Если вы не хотите этого делать, используйте ключ подписи приложения в качестве ключа загрузки для подписания новых выпусков.
Сертификат (.der или .pem)

Сертификат, который содержит открытый ключ и дополнительную информацию о его владельце. Сертификат открытого ключа позволяет кому угодно узнать, кто подписал набор App Bundle или APK-файл. Этим сертификатом можно делиться, так как он не включает закрытый ключ.

Чтобы зарегистрировать ключи у поставщиков API, вы можете скачать открытый сертификат для ключа подписи приложения на странице Подписание приложений в Play Console. Сертификатом открытого ключа можно делиться со всеми, так как он не включает закрытый ключ.

Цифровой отпечаток сертификата

Короткий и уникальный идентификатор сертификата. Отпечаток вместе с названием пакета часто запрашивают поставщики API для предоставления доступа к их услугам.

Цифровые отпечатки MD5, SHA-1 и SHA-256 сертификатов загрузки и подписи приложения можно найти на странице Подписание приложений в Play Console. Вы также можете получить цифровой отпечаток другого типа. Для этого скачайте оригинальный сертификат в формате DER на той же странице.

Хранилище ключей Java (.jks или .keystore) Хранилище сертификатов безопасности и закрытых ключей.
Инструмент PEPK

Инструмент для экспорта закрытых ключей из хранилища Java и их шифрования для передачи в Google Play.

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

Процесс подписания приложений

Вы можете загрузить APK-файлы, подписанные оригинальным ключом подписи приложения, до или после подписания приложения в Google Play.

Если вы переходите на наборы Android App Bundle, их можно проверить в версиях для тестирования, а в рабочих использовать существующие APK-файлы. Вот как это работает:

  1. Вы подписываете набор App Bundle или APK-файл и загружаете его в Play Console.
  2. Процесс подписания приложений зависит от того, что вы загружаете.
    • Набор App Bundle. Google оптимизирует APK-файлы из набора App Bundle, а затем подписывает их с помощью ключа подписи приложения.
    • APK-файл, подписанный ключом загрузки. Google проверяет вашу подпись, удаляет ее и повторно подписывает APK-файлы ключом подписи приложения.
    • APK-файл, подписанный ключом подписи приложения. Google проверяет подпись.
  3. Google доставляет подписанные APK-файлы пользователям.

Как зарегистрироваться в программе подписания приложений в Google Play

Новые приложения

Шаг 1. Создайте ключ загрузки

  1. Создайте ключ загрузки, следуя инструкциям.
  2. Подпишите новый APK-файл ключом загрузки.

Шаг 2. Подготовьте выпуск

  1. Подготовьте и внедрите выпуск приложения, следуя инструкциям.
  2. Выбрав тип версии, настройте параметры подписания приложений в разделе "Разрешите Google защищать ключ подписи приложения и управлять им".
  3. Если вы нажмете Продолжить, сгенерированный ключ станет ключом загрузки, который будет использоваться для подписания будущих выпусков. Также вы можете выбрать следующие расширенные настройки:
    • Использовать один ключ для разных приложений в аккаунте разработчика (вариант 2).
    • Загрузить ключ подписи существующего приложения (вариант 2, 3 и 4), выбрав наиболее подходящий способ экспорта и загрузки. Загрузив ключ подписи приложения и его открытый сертификат, вы можете создать ключ загрузки или использовать в его качестве ключ подписи приложения.

Примечание. Чтобы продолжить, нужно принять Условия использования и зарегистрироваться в программе подписания приложений.

Шаг 3. Зарегистрируйте ключ подписи приложения у поставщиков API

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

  1. Войдите в Play Console.
  2. Выберите приложение.
  3. В меню слева выберите Управление релизом > Подписи приложений.
  4. Скопируйте цифровые отпечатки (MD5, SHA-1 и SHA-256) сертификата подписания приложений.
    • Если поставщик API требует другой тип цифрового отпечатка, вы можете скачать оригинальный сертификат в формате DER и преобразовать его нужным образом с помощью соответствующих инструментов.
Опубликованные приложения

Шаг 1. Зарегистрируйтесь в программе подписания приложений в Google Play

  1. Войдите в Play Console.
  2. Выберите приложение.
  3. В меню слева выберите Управление релизом > Подписи приложений.
  4. При необходимости прочитайте Условия использования и нажмите Принять.

Шаг 2. Отправьте оригинальный ключ в Google и создайте ключ загрузки

  1. Найдите оригинальный ключ подписи приложения.
  2. Войдите в Play Console.
  3. Выберите приложение.
  4. В меню слева выберите Управление релизом > Подписи приложений.
  5. Загрузите существующий ключ подписи приложения наиболее подходящим для вашего процесса выпуска способом.

Шаг 3. Создайте ключ загрузки (необязательно, но рекомендуется)

  1. Создайте ключ загрузки и загрузите сертификат в Google Play.
    • В качестве ключа загрузки можно также использовать ключ подписи приложения.
  2. Скопируйте цифровые отпечатки (MD5, SHA-1 и SHA-256) сертификата подписания приложений.
    • Для проведения тестирования вам может потребоваться зарегистрировать у поставщика API сертификат ключа загрузки с помощью цифрового отпечатка сертификата и ключа подписи приложения.

Шаг 4. Подпишите следующее обновление своего приложения ключом загрузки

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

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

Как создать ключ загрузки и обновить хранилища ключей

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

Вы можете создать ключ загрузки при регистрации в программе подписания приложений в Google Play или сгенерировать его позже в разделе Управление релизом > Подписи приложений.

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

  1. Следуйте инструкциям на сайте для Android-разработчиков. Храните ключ в безопасном месте.
  2. Экспортируйте сертификат для ключа загрузки в формате PEM. Замените следующие аргументы со знаком подчеркивания:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Когда в процессе выпуска появится соответствующий запрос, загрузите сертификат, чтобы зарегистрировать его в Google.

Если вы используете ключ загрузки:

  • Ключ загрузки регистрируется в Google только для аутентификации личности создателя приложения.
  • Ваша подпись удаляется из всех загруженных APK-файлов, прежде чем они попадают к пользователям.
Ограничения
  • Ключ загрузки должен использовать шифрование RSA, его размер должен составлять не менее 2048 бит.
  • Не поддерживаются ключи DSA и EC, а также ключи RSA размером менее 2048 бит.
Обновление хранилищ ключей

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

  • локальная система;
  • защищенный локальный сервер (с различными списками контроля доступа);
  • облачная система (с различными списками контроля доступа);
  • специальные сервисы по управлению ключами;
  • репозитории Git.

Рекомендации

  • Если вы также опубликовали приложение за пределами Google Play или собираетесь сделать это, то можете сгенерировать общий ключ подписи приложения и загрузить его в Google при регистрации в программе подписания приложений в Google Play.
  • Чтобы защитить свой аккаунт, включите двухэтапную аутентификацию для всех аккаунтов, у которых есть доступ к Play Console.
  • После публикации набора App Bundle в тестовой или рабочей версии вы можете открыть Обозреватель App Bundle и скачать ZIP-архив, содержащий все APK-файлы для определенного устройства. Эти APK-файлы уже подписаны ключом подписи приложения. Вы можете установить их на устройство из ZIP-архива с помощью утилиты командной строки bundletool.
  • Для большей безопасности сгенерируйте новый ключ загрузки, который отличается от ключа подписи приложения.
  • Если вы хотите протестировать APK-файл, подписанный ключом загрузки, зарегистрируйте ключ в службе или API, которые используют подпись приложения для аутентификации (например, API Google Карт или пакет разработчика Facebook).
  • Если вы используете API Google, можно зарегистрировать сертификат загрузки в Google Cloud Console.

Что делать, если ключ утерян или взломан

Если вы потеряли доступ к закрытому ключу загрузки или он был взломан, создайте новый и попросите владельца своего аккаунта обратиться в службу поддержки и сбросить ключ. При обращении в службу поддержки владелец аккаунта должен прикрепить файл upload_certificate.pem.

Когда команда службы поддержки зарегистрирует новый ключ загрузки, вы получите электронное письмо, а затем сможете обновить хранилища ключей и зарегистрировать ключ у поставщиков API.

Важно! Сброс ключа загрузки не затрагивает ключ подписи приложения, с помощью которого Google Play подписывает APK-файлы перед отправкой пользователям.

Эта информация оказалась полезной?
Как можно улучшить эту статью?