Як підписувати додатки в Google Play

Якщо ви підписуватимете додатки в Google Play, Google зможе контролювати й захищати ваш ключ підписання та підписувати ним файли .apk для розповсюдження Це надійний спосіб зберігати ключ підписання додатка й захистити себе, якщо його буде втрачено чи зламано.

Важливо: перш ніж завантажити на Play Console мультипакет додатка в рекомендованому форматі Android App Bundle, зареєструйтеся в програмі підписів додатків Google Play.

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

Як це працює

Якщо ви використовуєте програму підписів додатків Google Play, ваші ключі зберігаються в інфраструктурі, яку Google використовує для власних ключів. Ключ захищає служба керування ключами Google. Щоб дізнатися про технічну інфраструктуру Google, перегляньте документ Google Cloud Security Whitepapers.

Додатки Android підписуються секретним ключем. Щоб гарантувати надійність оновлень додатків, з кожним секретним ключем зв’язано загальнодоступний сертифікат. За його допомогою пристрої та сервіси можуть перевіряти, чи додаток підписано секретним ключем із надійного джерела. Пристрої приймають оновлення, лише якщо його підпис збігається з підписом установленого додатка. Щоб додатково захистити цей процес, дозвольте Google контролювати ключ підписання додатка.

Примітка: користуватися програмою підписів додатків Google Play не обов’язково. Ви й надалі можете завантажити файл .apk і контролювати власні ключі, не використовуючи мультипакет додатка. Однак якщо сховище ключів буде недоступне або зламане, ви не зможете оновити свій додаток. Вам доведеться опублікувати новий додаток, використавши нову назву пакета.

Описи ключів, артефактів та інструментів
Термін Опис
Ключ підписання додатка

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

Цей ключ не можна змінити за весь період існування вашого додатка. Не повідомляйте нікому ключ підписання додатка. Натомість загальнодоступний сертифікат додатка можна надати будь-кому.

Ключ завантаження

Ключ, за допомогою якого ви підписуєте мультипакет додатка або файл .apk, перш ніж завантажити його в Google Play. Не поідомляйте нікому ключ завантаження. Натомість загальнодоступний сертифікат ключа завантаження можна надати будь-кому. З міркувань безпеки радимо використовувати різні ключі для підписання та завантаження додатка.

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

  • Використати ключ підписання додатка. Якщо під час реєстрації в програмі ви вказали, що ключ підписання додатка має створити Google, тоді ключ, за допомогою якого ви підписали перший випуск, буде також вашим ключем завантаження.
  • Створити окремий ключ завантаження. Якщо під час реєстрації в програмі підписів ви надали власний ключ підписання додатка, то з метою кращого захисту ви зможете згенерувати новий ключ завантаження. Якщо ви його не генеруєте, то для підписання випусків можете використувати ключ підписання додатків.
Сертифікат (.der або .pem)

Сертифікат містить загальнодоступний ключ і додаткові ідентифікаційні дані про його власника. За допомогою сертифіката загальнодоступного ключа будь-хто може перевірити, хто підписав мултипакет додатка чи файл .apk. Ви можете надавати цей сертифікат будь-кому, адже він не містить вашого секретного ключа.

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

Цифровий відбиток сертифіката

Коротке й унікальне представлення сертифіката, яке часто запитують постачальники API разом із назвою пакета, щоб зареєструвати додаток для використання своїх сервісів.

Цифрові відбитки MD5, SHA-1 і SHA-256 сертифікатів завантаження й підписання додатка можна знайти на сторінці Підписання додатка в Play Console. Інші цифрові відбитки також можна обчислити, завантаживши оригінальний сертифікат (.der) на тій самій сторінці.

Сховище ключів Java (.jks або .keystore) Сховище сертифікатів безпеки та секретних ключів.
Інструмент Play Encrypt Private Key (PEPK)

Інструмент, за допомогою якого можна експортувати секретні ключі зі сховища Java та зашифрувати їх для перенесення в Google Play.

Надаючи Google ключ підписання додатка, виберіть опцію експорту й завантаження ключа (і його загальнодоступного сертифіката, якщо потрібно), а потім дотримуйтеся вказівок, щоб завантажити інструмент і скористатися ним. Або можна завантажити й переглянути відкритий код інструмента PEPK і скористатися ним.

Підписання додатків

Ви можете завантажити файли .apk, підписані оригінальним ключем підписання додатка, до чи після реєстрації в програмі підписів додатків Google Play.

Якщо ви починаєте користуватися мультипакетами Android App Bundle, то можете спробувати їх у тестових версіях, одночасно використовуючи наявний файл .apk для робочої версії. Ось як виглядає цей процес.

  1. Підпишіть мультипакет додатка або файл .apk і завантажте його в Play Console.
  2. Подальший процес підписання залежить від типу завантаженого файлу.
    • Мультипакет додатка: Google створить оптимізовані файли .apk з вашого мультипакета додатка та підпише їх ключем підписання додатка.
    • Файл .apk, підписаний ключем завантаження: Google перевірить і отримає ваш підпис із файлу .apk, а потім повторно підпише файл .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 і конвертувати його за допомогою інструментів перетворення, які вкаже постачальник API.
Наявні додатки

Крок 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 бітів, не підтримуються.
Як оновлювати сховища ключів

Коли ключ завантаження створено, радимо перевірити й оновити:

  • локальні комп’ютери
  • закритий локальний сервер (різні списки ACL)
  • комп’ютер у хмарі (різні списки ACL)
  • спеціальні секретні служби керування пристроєм
  • сховища даних Git

Як оновити ключ підписання додатка для нових встановлень

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

Для кожного додатка ключ підписання можна оновити лише раз. Дуже рідко кілька додатків можуть підписуватися тим самим ключем у тому самому процесі. Тоді оновити ключ не вдасться.

Ось у яких випадках можна надіслати запит на оновлення ключа:

  • потрібен криптографічно надійніший ключ;
  • ключ підписання додатка зламано.

Примітка: запит на оновлення ключа підписання додатка в Play Console не стосується чергування ключа в схемі підписання файлу .apk 3 для Android P та новіших версій. Google Play наразі не підтримує цей тип чергування ключа.

Що слід врахувати, надсилаючи запит на оновлення ключа підписання додатка

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

  • Якщо за допомогою того самого ключа підписання декілька додатків отримують доступ до спільного коду чи даних, у таких додатках потрібно налаштувати розпізнавання сертифікатів нового та старого ключів.
  • Щоб API додатка надалі працювали після його оновлення, зареєструйте сертифікати нового та старого ключів підписання в постачальників API, перш ніж опублікувати оновлення. Сертифікати доступні на сторінці Підписи додатків у Play Console.  
  • Якщо багато користувачів отримують дані через однорангову мережу, вони зможуть установити лише оновлення, підписані тим самим ключем, що й версія додатка на їхньому пристрої. Якщо версію додатка на пристрої користувача підписано іншим ключем, щоб оновити додаток, його потрібно видалити та встановити повторно.
Як надіслати запит на оновлення ключа для нових встановлень
  1. Увійдіть в обліковий запис Play Console.
  2. Виберіть додаток.
  3. У меню ліворуч виберіть Керування випуском > Підпис додатка.
  4. На картці "Оновлення ключа підписання додатка для нових встановлень" виберіть Надіслати запит на оновлення ключа.
  5. Виберіть потрібний варіант.
    • Деякі варіанти передбачають, що для виконання запиту потрібно звернутися в службу підтримки.
  6. Завантажте новий ключ підписання додатка або зачекайте, поки Google його згенерує (рекомендуємо).
    • Якщо ви підписували й завантажували додаток за допомогою того самого ключа, після оновлення можна використовувати для завантаження старий ключ підписання або створити новий ключ завантаження.

Практичні поради

  • Якщо ви публікуєте чи плануєте публікувати додаток не лише в Google Play, то можете створити ключ підписання додатка, який буде використовуватися в кожному магазині додатків, а потім завантажити його в Google під час реєстрації в програмі підписів додатків Google Play.
  • Щоб захистити свій обліковий запис, увімкніть двохетапну перевірку для облікових записів із доступом до Play Console.
  • Опублікувавши мультипакет додатка в тестовій або робочій версії, ви можете перейти в інструмент огляду мультипакетів додатків, щоб завантажити архів .zip з усіма файлами .apk для певного пристрою. Такі файли .apk підписано ключем підписання додатка. Ви можете встановити на пристрої файли .apk з архіву .zip, відкривши з командного рядка інструмент bundletool.
  • Задля кращого захисту створіть новий ключ завантаження, відмінний від ключа підписання додатка.
  • Щоб перевірити файл .apk, підписаний ключем завантаження, зареєструйте цей ключ у будь-якій службі чи API, де для автентифікації використовується підпис додатка (наприклад, Google Maps API або SDK Facebook).
  • Якщо ви користуєтесь API Google, зареєструйте сертифікат завантаження додатка в Google Cloud Console.

Ключ завантаження втрачено або зламано?

Якщо приватний ключ завантаження втрачено або зламано, створіть новий і попросіть власника облікового запису зв’язатися зі службою підтримки, щоб скинути дані ключа. Звертаючись до служби підтримки, власник облікового запису має вкласти файл upload_certificate.pem.

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

Важливо! Скидання ключа завантаження не впливає на ключ підписання додатка, яким Google Play повторно підписує файли .apk перед публікацією.

Чи корисна ця інформація?
Як можна її покращити?