Използване на подписването на приложения в Google Play

С помощта на функцията за подписване на приложения в Google Play управляваме и защитаваме ключа за подписване на приложението ви вместо вас и подписваме с него APK файловете ви за разпространение. Това е сигурен начин за съхраняването му, който ви защитава, ако ключът бъде загубен или компрометиран.

Важно: За да използвате препоръчителния формат за публикуване на приложения – Android App Bundle, трябва да се регистрирате във функцията за подписване на приложения в Google Play, преди да качите пакета с приложения в Play Console.

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

Начин на работа

Когато използвате функцията за подписване на приложения в Google Play, ключовете ви се съхраняват в същата инфраструктура, която Google използва за съхранение на собствените си ключове. Те са защитени чрез услугата ни за управление на ключовете. Ако искате да научите повече за техническата ни инфраструктура, прочетете информационните бюлетини за сигурността на Google Cloud (само на английски).

Приложенията за Android се подписват с частен ключ. За да се гарантира надеждността на актуализациите им, всеки частен ключ е свързан с публичен сертификат, чрез който устройствата и услугите потвърждават, че приложението е от надежден източник. Устройствата приемат дадена актуализация само ако подписът ѝ съответства на този на инсталираното приложение. Ако позволите на Google да управлява ключа ви за подписване на приложение, този процес става по-сигурен.

Забележка: Не е задължително да използвате функцията за подписване на приложения в Google Play. Пак можете да качвате APK файлове и да управлявате собствените си ключове, вместо да използвате Android App Bundle. Ако обаче загубите хранилището си за ключове или то бъде компрометирано, няма да имате възможност да актуализирате приложението си, без да публикувате ново с друго име на пакета.

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

Ключът, с който Google Play подписва APK файловете, разпространявани до устройствата на потребителите. Когато се включите във функцията за подписване на приложения в 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. Подписвате пакета Android App Bundle или APK файла си и го качвате в Play Console.
  2. В зависимост от това, какво качвате, ето разликите в процеса на подписване:
    • Android App Bundle:
      • Google генерира оптимизирани APK файлове от пакета и ги подписва с ключа за подписване на приложение.
      • Google добавя два печата в манифеста на приложението ви (com.android.stamp.source и com.android.stamp.type). Това дава възможност да проследите APK файла си до източника му.
    • APK файл, подписан с ключ за качване: Google потвърждава подписа ви в APK файла, премахва го, след което отново подписва APK файла с ключа за подписване на приложение.
    • APK файл, подписан с ключ за подписване на приложение: Google потвърждава подписа.
  3. Google разпространява подписаните APK файлове до потребителите.

Включване в подписването на приложения в Google Play

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

Стъпка 1: Създаване на ключ за качване

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

Стъпка 2: Подготвяне на версията ви

  1. Изпълнете инструкциите за подготвяне и разпространение на версията ви.
  2. След като изберете канал за пускане, конфигурирайте функцията за подписване на приложения в секцията „Разрешаване на Google да управлява и защитава ключа ви за подписване на приложение“.
  3. Изберете Напред, при което генерираният ключ става ключът за качване, който да използвате за подписване на бъдещите публикувани версии, или предпочитанията за подписване на приложение, които включват:
    • използване на същия ключ, с който е подписано друго приложение в профила ви на програмист (опция 2).
    • експортиране и качване на съществуващ ключ от хранилище за ключове в Java (опция 3) или без използване на такова хранилище (опция 4). Изберете опцията за експортиране и качване, която е най-подходяща за вас. След като качите ключа за подписване и публичния му сертификат, можете да продължите да използвате ключа като такъв за качване или да създадете нов ключ за качване.
    • Отказване от подписването на приложения в Google Play (опция 5)
  4. Изберете Актуализиране.

Забележка: За да продължите, трябва да приемете Общите условия и да се включите във функцията за подписване на приложения.

Стъпка 3: Регистриране на ключа за подписване на приложение към доставчици на API

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

  1. Отворете Play Console.
  2. В менюто вляво отворете Версия> Настройване > Цялост на приложението.
  3. Превъртете до секцията „Сертификат за ключа за подписване на приложение“ и копирайте отпечатъците (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 бита.
Актуализиране на хранилищата за ключове

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

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

Надстройване на ключа ви за подписване на приложение за нови инсталирания

В някои случаи можете да заявите надстройване на ключа за подписване на приложение. Новият ви ключ се използва за подписване на нови версии за инсталиране и актуализации за приложения. Предишният ви ключ за подписване на приложение все още се използва за подписване на актуализации за потребители, които са инсталирали приложението ви преди надстройването на ключа.

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

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

  • трябва ви криптографски по-надежден ключ;
  • ключът ви за подписване на приложение е компрометиран.

Забележка: Заявяването на надстройване на ключа за подписване на приложение в Play Console не е свързано с промяната на ключа, въведена в APK signature scheme v3 за Android P и по-нови версии. Този тип промяна на ключа понастоящем не се поддържа от Google Play.

Важни съображения, преди да заявите надстройване на ключ

Преди да заявите надстройване на ключ, е важно да разберете промените, които може да се наложи да направите след завършване на надстройването.

  • Ако използвате един и същ ключ за подписване на няколко приложения с цел споделяне на код и данни между тях, ще трябва да ги актуализирате, за да разпознават и новия, и предишния сертификат на ключа за подписване на приложение.
  • Ако приложението ви използва приложни програмни интерфейси (API), трябва да регистрирате сертификатите за новия и предишния ви ключ за подписване на приложение към доставчиците на API. Направете го, преди да публикувате актуализацията, за да е сигурно, че тези API продължават да работят. Сертификатите са налични на страницата Подписване на приложение в Play Console.  
  • Ако много от потребителите ви инсталират актуализации чрез споделяне с директна връзка, те ще могат да инсталират само актуализации, подписани със същия ключ като версията на приложението, която вече са инсталирали. Ако не могат да актуализират приложението си, защото имат версия, подписана с различен ключ, те имат възможност да деинсталират и инсталират отново приложението, за да получат актуализацията.
Заявяване на надстройване на ключа за нови инсталирания
  1. Отворете Play Console.
  2. Изберете приложение.
  3. В менюто вляво отворете Версия> Настройване > Цялост на приложението.
  4. В картата „Надстройване на ключа ви за подписване на приложение за нови инсталирания“ изберете Заявка за надстройване на ключа.
  5. Изберете опция.
    • В зависимост от избраната опция може да се наложи да се свържете с екипа за поддръжка, за да завършите заявката си.
  6. Изберете Google да генерира нов ключ за подписване на приложение (препоръчително) или качете такъв.
    • След като надстроите ключа за подписване на приложение, ако сте използвали един и същ ключ за качване и подписване на приложението, можете да продължите да използвате досегашния си ключ за подписване на приложение като ключ за качване или да генерирате нов ключ за качване.

Най-добри практики

  • Ако разпространявате приложението си и извън Google Play или възнамерявате да го правите в бъдеще и искате да използвате същия ключ за подписване, имате две възможности: 
    • Едната е да разрешите на Google да генерира ключа (препоръчително) и да изтеглите подписан универсален APK файл от инструмента за разглеждане на Android App Bundle с цел разпространение извън Google Play. Можете също да изтеглите подписани APK файлове от API на Google Play за програмисти.
    • Друга възможност е да генерирате ключа за подписване, който искате да използвате за всеки магазин за приложения, и да прехвърлите негово копие на Google, когато се включите във функцията за подписване на приложения в Google Play.
  • За да защитите профила си, включете потвърждаването в две стъпки за профилите, които имат достъп до Play Console.
  • След като публикувате пакет с приложения в тестов или стандартния канал, можете да използвате инструмента за разглеждане на Android App Bundle, за да изтеглите архивен ZIP файл с всички APK файлове за конкретно устройство. Тези APK файлове са подписани с ключа за подписване на приложение. Можете да ги инсталирате в архивния ZIP файл на дадено устройство посредством командата adb install-multiple *.apk.
  • За повишена сигурност генерирайте нов ключ за качване, различен от ключа за подписване на приложение.
  • Ако искате да тествате APK файла, подписан с ключа за качване, трябва да регистрирате ключа си за качване във всяка услуга или API, които използват подписа на приложението ви за удостоверяване (например API на Google Карти или комплекта за разработване на софтуер (SDK) на Facebook).
  • В случай че използвате API на Google, добре е да регистрирате сертификата за качване в Google Cloud Console за приложението си.

Ключът за качване е загубен или компрометиран?

Ако сте загубили частния си ключ за качване или той е бил компрометиран, можете да създадете нов, след което да помолите собственика на профила да се свърже с екипа за поддръжка, за да нулира ключа. За целта собственикът трябва да прикачи файла upload_certificate.pem.

След като екипът ни за поддръжка регистрира новия ключ за качване, ще получите имейл, след което ще можете да актуализирате хранилищата си за ключове и да регистрирате ключа към доставчиците на API.

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

Това полезно ли бе?
Как можем да направим подобрения?

Нуждаете се от още помощ?

Влезте в профила си за допълнителни опции за поддръжка, за да решите бързо проблема си