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

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

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

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

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

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

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

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

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

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

Ключ за качване

Ключът, с който подписвате пакетите с приложения, преди да ги качите в Google Play. Не трябва да го разкривате на никого, но можете да споделяте публичния сертификат на приложението си с други хора. От съображения за сигурност е добре ключът за подписване на приложение да е различен от този за качване.

Има два начина за генериране на ключ за качване:

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

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

За да регистрирате ключовете си към доставчици на API, можете да изтеглите публичния сертификат за ключа за подписване на приложение и този за ключа за качване от страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение) в Play Console. Можете да споделите сертификата за публичен ключ с когото пожелаете. Той не съдържа личния ви ключ.

Отпечатък за сертификат

Кратък уникален идентификатор, който доставчиците на API често изискват заедно с името на пакета, когато дадено приложение се регистрира с цел използване на услугите им.

Отпечатъците, основани на MD5, SHA-1 и SHA-256, на сертификата за качване и този за подписване на приложение могат да бъдат намерени на страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение) в Play Console. И другите отпечатъци могат да бъдат изчислени, като за целта трябва да се изтегли оригиналният сертификат (.der) от същата страница.

Хранилище за ключове в Java (.jks или .keystore) Хранилище за сертификати за сигурност и лични ключове.
Личен ключ за шифроване в Google Play (PEPK)

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

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

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

Ето как протича процесът:

  1. Подпишете пакета си с приложения и го качете в Play Console.
  2. Google генерира оптимизирани APK файлове от пакета и ги подписва с ключа за подписване на приложение.
  3. Използваме apksigner, за да добавим две клейма в манифеста на приложението ви (com.android.stamp.source и com.android.stamp.type), и след това подписваме APK файловете с ключа ви за подписване на приложение. Клеймата, добавени чрез apksigner, дават възможност да се проследи от кого са подписани APK файловете.
  4. Google разпространява подписаните APK файлове до потребителите.

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

Ако приложението ви още не използва функцията за подписване на приложения в Google Play, изпълнете инструкциите по-долу.

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

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

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

  1. Изпълнете инструкциите за подготвяне и разпространение на версията ви.
  2. След като изберете канал за пускане, в секцията „Цялост на приложението“ се показва състоянието на функцията за подписване на приложения в Google Play за приложението ви.
  3. За да продължите с генериран от Google ключ за подписване на приложение, качете пакета си с приложения. Друга възможност е да изберете Промяна на ключа за подписване на приложение, при което получавате достъп до следните опции:
    • Използване на генериран от Google ключ за подписване на приложение: Над 90% от новите приложения ползват такива ключове. Генерираните от Google ключове предоставят защита срещу загуба или компрометиране (ключовете не се изтеглят). Ако изберете тази опция, можете да изтеглите APK файловете за разпространение, подписани с генерирания от Google ключ за други канали за разпространение, от инструмента за разглеждане на Android App Bundle или да използвате различен ключ за тях.
    • Използване на друг ключ за подписване на приложение: При избирането на ключ за подписване на приложение имате възможност да използвате същия ключ, с който е подписано друго приложение в профила ви на програмист, или да запазите локално копие на съответния ключ за по-голяма гъвкавост. Възможно е например вече да разполагате с определен ключ поради това, че приложението ви е предварително инсталирано на някои устройства. Съхраняването на копие на ключа ви извън сървърите на Google увеличава риска, в случай че то бъде компрометирано. Разполагате с посочените по-долу опции за използване на различен ключ:
  4. Изпълнете останалите инструкции за подготвяне и разпространение на версията ви.

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

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

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

  1. Отворете Play Console и страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение).
  2. Превъртете до секцията „Сертификат за ключа за подписване на приложение“ и копирайте отпечатъците (MD5, SHA-1 и SHA-256) на сертификата ви за подписване на приложение.
    • Ако доставчикът на API изисква друг тип отпечатък, можете също да изтеглите оригиналния сертификат във формат .der и да го конвертирате посредством инструментите за преобразуване, които се изискват от съответния доставчик.
Изисквания за ключа за подписване на приложение

Когато използвате генериран от Google ключ, ние автоматично генерираме криптографски надежден RSA ключ с дължина 4096 бита. Ако решите да качите собствен, той трябва да е RSA ключ с дължина най-малко 2048 бита.

Инструкции за приложенията, създадени преди август 2021 г.

Стъпка 1: Конфигуриране на функцията за подписване на приложения в Google Play

  1. Отворете Play Console и страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение).
  2. Ако още не сте го направили, прегледайте Общите условия на функцията за подписване на приложения в Google Play и изберете Приемам.

Стъпка 2: Изпращане на копие на оригиналния ви ключ до Google и създаване на ключ за качване

  1. Намерете оригиналния ключ за подписване на приложение.
  2. Отворете Play Console и страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение).
  3. Изберете опцията за експортиране и качване, която е най-подходяща за процеса ви на разпространение, и качете съществуващия ключ за подписване на приложение.

Стъпка 3: Създаване на ключ за качване (препоръчва се, но не е задължително)

  1. Създайте ключ за качване и качете сертификата в Google Play.
    • Можете също да продължите да използвате ключа за подписване на приложение като такъв за качване.
  2. Копирайте отпечатъците (MD5, SHA-1 и SHA-256) на сертификата за подписване на приложението ви.
    • За целите на тестването може да се наложи да регистрирате сертификата на ключа за качване към доставчиците на API посредством отпечатъка на сертификата и ключа за подписване на приложение.

Стъпка 4: Подписване на следващата актуализация на приложението ви с ключа за качване

Когато публикувате актуализации за приложението си, трябва да ги подпишете с ключа си за качване.

  • Ако не сте генерирали нов ключ за качване, продължете да използвате оригиналния си ключ за подписване на приложение, за да подписвате пакетите с приложения, преди да ги качите в Google Play. В случай че загубите оригиналния ключ за подписване, можете да генерирате нов ключ за качване и да го регистрирате в Google, за да продължите да актуализирате приложението си.
  • Ако сте генерирали нов ключ за качване, подписвайте с него пакетите с приложения, преди да ги качите в Google Play. Използваме ключа за качване с цел потвърждаване на самоличността ви. В случай че загубите този ключ, можете да се свържете с екипа за поддръжка, за да бъде нулиран.
Надстройване на ключа ви за подписване на приложение с цел регистриране във функцията за подписване на приложения в Google Play

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

  • За тази опция ще са необходими две версии.
  • Трябва да качите пакет с приложения и APK, подписани с наследен ключ във всяка версия. Google Play ще използва пакетите ви с приложения, за да генерира APK, подписани с новия ключ за устройства с Android R* (API ниво 30) или по-нова версия. Наследените ви APK ще се използват за по-стари версии на Android (до API ниво 29).

* Ако приложението ви използва sharedUserId, се препоръчва да приложите надстройването на ключа за инсталирания и актуализации на устройства с Android T (API ниво 33) или по-нова версия. За да настроите това, задайте точна минимална версия на SDK в конфигурацията на пакета.

Стъпка 1: Качване на новия ви ключ и генериране и качване на удостоверение за смяна на ключа

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

  1. Отворете Play Console и страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение).
  2. Изберете раздела Подписване на приложение.
  3. Кликнете върху Показване на разширените опции и изберете Използване на нов ключ за подписване на приложение (това изисква две текущи версии).
  4. Използвайте същия ключ, с който е подписано друго приложение в профила ви на програмист, или качете нов ключ за подписване на приложение от Android Studio, хранилище за ключове в Java или друго хранилище.
  5. Изпълнете инструкциите на екрана, за да изтеглите и стартирате инструмента PEPK.
  6. Когато е готов, качете ZIP файла в Play Console, като кликнете върху Качване на генериран ZIP файл.
  7. До „5. Качете удостоверение за смяна на ключа, за да може новият ви ключ да се ползва с доверие на устройствата с Android“ кликнете върху Показване на инструкциите.
  8. Изтеглете 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
  9. Качете генерираното в стъпка 8 удостоверение за смяна на ключа, като кликнете върху Качване на файла с генерираното удостоверение за смяна на ключа.
  10. Кликнете върху Запазване.

Създаване на ключ за качване и актуализиране на хранилищата за ключове

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

Можете да създадете ключ за качване при включването си във функцията за подписване на приложения в Google Play или по-късно, като посетите страницата Подписване на приложения в 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, прочетете секцията Важни съображения, преди да заявите надстройване на ключ по-долу. След това можете да разгънете другите секции по-долу, за да научите повече за заявяването на надстройване на ключа.

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

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

  • В случай че използвате един и същ ключ за подписване на няколко приложения с цел споделяне на код и данни между тях, ще трябва да ги актуализирате, за да разпознават и новия, и предишния сертификат на ключа за подписване на приложение. На устройства с Android S (API ниво 32) или по-стари версии платформата Android разпознава само предишния сертификат на ключа за подписване на приложение с цел споделяне на данни и код.
  • Ако приложението ви използва API, трябва да регистрирате сертификатите за новия и предишния ви ключ за подписване на приложение към доставчиците на API. Направете го, преди да публикувате актуализацията, за да е сигурно, че тези API продължават да работят. Сертификатите са налични на страницата Подписване на приложения в Google Play (Версия > Настройване > Подписване на приложение) в Play Console.  
  • В случай че някои от потребителите ви инсталират актуализации чрез споделяне с равноправен достъп, те ще могат да инсталират само актуализации, подписани със същия ключ като версията на приложението, която вече са инсталирали. Ако не могат да актуализират приложението си, защото имат версия, подписана с различен ключ, те имат възможност да деинсталират и инсталират отново приложението, за да получат актуализацията.
Заявяване на надстройване на ключа за всички инсталирания под Android N (API ниво 24) и по-нови версии

Ключът за подписване на приложение може да бъде надстроен за всички инсталирания под Android N (API ниво 24) и по-нови версии веднъж годишно.

Ако успешно заявите надстройване на този ключ, новият се използва за подписване на всички инсталирания и актуализации на приложения. На устройства с Android T (API ниво 33) и по-нови версии платформата Android налага използването на надстроения ключ. На устройства с Android S (API ниво 32) или по-стари версии платформата Android не налага използването на надстроения ключ и пак разпознава предишния ключ като такъв за подписване на приложение. Също така това включва функциите на платформата Android (например споделянето на персонализирани разрешения), които разчитат на ключа за подписване на приложението. На устройствата с Android N (API ниво 24) до Android S (API ниво 32) Google Play Protect ще проверява дали актуализациите на приложението са подписани с надстроения ви ключ, освен ако услугата не е изключена от потребителя. Това осигурява допълнителна проверка, тъй като платформата Android не налага използването на надстроения ключ на устройства с Android S (API ниво 32) или по-стари версии.

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

Пояснение: Ако разпространявате приложението си в няколко канала и искате да осигурите на потребителите си максимална съвместимост на актуализациите, трябва да надстроите ключа си за всеки канал. За съвместимост с надстройката на ключа на Google Play използвайте инструмента ApkSigner, който е в пакета с инструментите на SDK за Android (корекция 33.0.1 и по-нови):

$ apksigner sign --in ${INPUT_APK}

--out ${OUTPUT_APK}

--ks ${ORIGINAL_KEYSTORE}

--ks-key-alias ${ORIGINAL_KEY_ALIAS}

--next-signer --ks ${UPGRADED_KEYSTORE}

--ks-key-alias ${UPGRADED_KEY_ALIAS}

--lineage ${LINEAGE}

Научете повече за начина на работа на актуализациите на приложенията.

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

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

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

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

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

Собственикът на профила може също да анулира заявката за нулиране в Play Console.

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

APK Signature Scheme v4

Устройствата с Android 11 и по-нова версия поддържат новата APK signature scheme v4. Функцията за подписване на приложения в Google Play използва v4 Signing за отговарящите на условията приложения, така че те да могат да получат достъп до оптимизираните функции за разпространение, достъпни на по-новите устройства. Не са необходими действия от страна на програмистите и не се очаква въздействие от v4 Signing върху потребителите.

Сродно съдържание

Това полезно ли бе?

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

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

Изпробвайте следните стъпки:

Търсене
Изчистване на търсенето
Затваряне на търсенето
Главно меню
17367014431668625427
true
Търсене в Помощния център
true
true
true
true
true
92637
false
false