Upotreba potpisivanja aplikacije koje pruža Google Play

Pomoću potpisivanja aplikacije koje pruža Google Play Google preuzima upravljanje vašim ključem za potpisivanje aplikacije i njegovu zaštitu te ga upotrebljava za potpisivanje vaših APK-ova za distribuciju. To je siguran način pohranjivanja ključa za potpisivanje aplikacije koji vam pruža dodatnu zaštitu ako se taj ključ izgubi ili ga nešto ugrozi.

Važno: da biste upotrebljavali Android App Bundle, preporučeni format za objavljivanje aplikacija, morate se prijaviti za potpisivanje aplikacije koje pruža Google Play prije nego što prenesete paket aplikacije na Play konzolu.

Da biste se uključili, morate biti vlasnik računa ili korisnik s općim dopuštenjima "Upravljanje produkcijskim izdanjima" i trebate prihvatiti Uvjete pružanja usluge. Za potpisivanje aplikacije koje pruža Google Play aplikacije se mogu prijaviti jedna po jedna.

Način rada

Kada upotrebljavate potpisivanje aplikacije koje pruža Google Play, vaši se ključevi pohranjuju na istoj infrastrukturi koju Google upotrebljava za pohranu vlastitih ključeva. Ključevi su zaštićeni Googleovom uslugom Key Management Service. Ako želite saznati više o Googleovoj tehničkoj infrastrukturi, pročitajte Dokument o sigurnosti Googleovog oblaka.

Android aplikacije potpisuju se privatnim ključem. Da bi ažuriranja aplikacija bila pouzdana, svaki privatni ključ ima povezani javni certifikat pomoću kojeg uređaji i usluge mogu potvrditi da je aplikacija iz pouzdanog izvora. Uređaji prihvaćaju ažuriranje samo kada se njegov potpis podudara s potpisom instalirane aplikacije. Ako dopustite Googleu da upravlja vašim ključem za potpisivanje aplikacije, taj je postupak sigurniji.

Napomena: upotreba potpisivanja aplikacije koje pruža Google Play nije obavezna. I dalje možete prenijeti APK i upravljati vlastitim ključevima umjesto da koristite paket aplikacije. No ako izgubite spremište ključeva ili ga nešto ugrozi, nećete moći ažurirati svoju aplikaciju bez objavljivanja nove aplikacije s novim nazivom paketa.

Opisi ključeva, artefakata i alata
Pojam Opis
Ključ za potpisivanje aplikacije

Ključ koji Google Play upotrebljava za potpisivanje APK-ova koji se isporučuju na korisnikov uređaj. Kada uključite potpisivanje aplikacije koje pruža Google Play, možete prenijeti postojeći ključ za potpisivanje aplikacije ili Google može generirati ključ za vas.

Ključ za potpisivanje aplikacije ne može se nikad promijeniti za vijeka trajanja aplikacije. Ključ za potpisivanje aplikacije nemojte otkrivati nikome, no javni certifikat aplikacije može se dijeliti.

Ključ za prijenos

Ključ koji upotrebljavate za potpisivanje paketa aplikacije ili APK-a prije prijenosa na Google Play. Ključ za prijenos nemojte otkrivati nikome, no javni certifikat aplikacije može se dijeliti. Iz sigurnosnih razloga dobro je da se ključ za potpisivanje aplikacije razlikuje od ključa za prijenos.

Ključ za prijenos može se generirati na dva načina:

  • Pomoću ključa za potpisivanje aplikacije: ako prilikom uključivanja u potpisivanje aplikacije odaberete da ključ za potpisivanje generira Google, ključ koji koristite za prvo izdanje također je i ključ za prijenos.
  • Pomoću zasebnog ključa za prijenos: ako prilikom uključivanja u potpisivanje aplikacije pružite vlastiti ključ za potpisivanje aplikacije, pruža vam se mogućnost generiranja novog ključa za prijenos radi povećane zaštite. Ako ga ne generirate, koristite ključ za potpisivanje aplikacije kao ključ za prijenos da biste potpisali izdanja.
Certifikat (.der ili .pem)

Certifikat sadrži javni ključ i dodatne informacije o identitetu vlasnika ključa. Na temelju certifikata javnog ključa svatko može provjeriti tko je potpisao paket aplikacije ili APK i taj certifikat možete dijeliti s bilo kime jer ne sadrži vaš privatni ključ.

Da biste registrirali ključeve pri davateljima API-jeva, možete preuzeti javni certifikat za svoj ključ za potpisivanje aplikacije i svoj ključ za prijenos na stranici Potpisivanje aplikacije na Play konzoli. Certifikat javnog ključa može se dijeliti s bilo kim. Ne sadrži vaš privatni ključ.

Otisak prsta certifikata

Kratak i jedinstven prikaz certifikata koji davatelji API-jeva često traže uz naziv paketa radi registracije aplikacije za upotrebu njihove usluge.

MD5, SHA-1 i SHA-256 otisci prsta certifikata za prijenos i potpisivanje aplikacije mogu se pronaći na stranici Potpisivanje aplikacije na Play konzoli. Drugi otisci prsta također se mogu izračunati preuzimanjem izvornog certifikata (.der) s iste stranice.

Java spremište ključeva (.jks ili .keystore) Spremište sigurnosnih certifikata i privatnih ključeva.
Playev alat za kriptiranje privatnog ključa (PEPK)

Alat za izvoz privatnih ključeva iz Java spremišta ključeva i njihovu enkripciju za prijenos na Google Play.

Prilikom pružanja ključa za potpisivanje aplikacije koji Google treba upotrijebiti, odaberite opciju za izvoz i prijenos ključa (i njegovog javnog certifikata ako je to potrebno) i slijedite upute za preuzimanje i upotrebu tog alata. Ako želite, možete preuzeti, pregledati i koristiti otvoreni izvorni kôd PEPK alata.

Postupak potpisivanja aplikacije

APK-ove potpisane izvornim ključem za potpisivanje aplikacije možete prenijeti prije ili nakon uključivanja u potpisivanje aplikacije koje pruža Google Play.

Ako započinjete s upotrebom Android App Bundleova, možete ih testirati u verzijama za testiranje dok koristite postojeći APK u produkciji. Taj postupak funkcionira ovako:

  1. Potpišite svoj paket aplikacije ili APK i prenesite ga na Play konzolu.
  2. Ovisno o tome što prenosite, evo kako se postupak potpisivanja razlikuje:
    • Paket aplikacije: Google generira optimizirane APK-ove iz paketa aplikacije i potpisuje ih ključem za potpisivanje aplikacije.
    • APK potpisan ključem za prijenos: Google provjerava i uklanja vaš potpis iz APK-a, a zatim ponovo potpisuje APK ključem za potpisivanje aplikacije.
    • APK potpisan ključem za potpisivanje aplikacije: Google provjerava potpis.
  3. Google isporučuje potpisane APK-ove korisnicima.

Uključivanje u potpisivanje aplikacije koje pruža Google Play

Nove aplikacije

1. korak: izradite ključ za prijenos

  1. Slijedite upute da biste izradili ključ za prijenos.
  2. Potpišite svoj novi APK ključem za prijenos.

2. korak: pripremite izdanje

  1. Slijedite upute da biste pripremili i uveli izdanje.
  2. Nakon što odaberete verziju izdanja, konfigurirajte potpisivanje aplikacije u odjeljku "Dopustite Googleu da štiti vaš ključ za potpisivanje aplikacije i upravlja njime".
  3. Odaberite Nastavi, čime će generirani ključ postati vaš ključ za prijenos pomoću kojeg ćete potpisivati buduća izdanja, ili Napredne opcije, koje uključuju:
    • Upotrebu istog ključa kao neka druga aplikacija na vašem računu razvojnog programera (opcija 2).
    • Prijenos postojećeg ključa za potpisivanje aplikacije (opcije 2, 3 i 4): odaberite opciju izvoza i prijenosa koja vam najbolje odgovara. Nakon što prenesete ključ za potpisivanje aplikacije i njegov javni certifikat, možete izraditi ključ za prijenos ili nastaviti koristiti ključ za potpisivanje aplikacije kao ključ za prijenos.

Napomena: trebate prihvatiti Uvjete pružanja usluge i uključiti se u potpisivanje aplikacije da biste nastavili.

3. korak: registrirajte ključ za potpisivanje aplikacije pri davateljima API-jeva

Ako vaša aplikacija upotrebljava API-jeve, obično ćete morati registrirati certifikat ključa kojim Google potpisuje vašu aplikaciju u svrhu autentifikacije pomoću otiska prsta certifikata. Evo gdje možete pronaći certifikat:

  1. Prijavite se na Play konzolu.
  2. Odaberite aplikaciju.
  3. Na lijevom izborniku odaberite Upravljanje izdanjima > Potpisivanje aplikacije.
  4. Kopirajte otiske prstiju (MD5, SHA-1 i SHA-256) certifikata za potpisivanje aplikacije.
    • Ako davatelj API-jeva zahtijeva neku drugu vrstu otiska prsta, možete preuzeti i izvorni certifikat u .der formatu i konvertirati ga pomoću alata za transformaciju koje zahtijeva davatelj API-jeva.
Postojeće aplikacije

1. korak: registrirajte se za potpisivanje aplikacije koje nudi Google Play

  1. Prijavite se na Play konzolu.
  2. Odaberite aplikaciju.
  3. Na lijevom izborniku odaberite Upravljanje izdanjima > Potpisivanje aplikacije.
  4. Ako to još niste učinili, pregledajte Uvjete pružanja usluge i odaberite Prihvati.

2. korak: pošaljite izvorni ključ Googleu i izradite ključ za prijenos

  1. Pronađite izvorni ključ za potpisivanje aplikacije.
  2. Prijavite se na Play konzolu.
  3. Odaberite aplikaciju.
  4. Na lijevom izborniku odaberite Upravljanje izdanjima > Potpisivanje aplikacije.
  5. Odaberite opciju izvoza i prijenosa koja najbolje odgovara vašem postupku izdavanja i prenesite postojeći ključ za potpisivanje aplikacije.

3. korak: izradite ključ za prijenos (nije obavezno, ali se preporučuje)

  1. Izradite ključ za prijenos i prenesite certifikat na Google Play.
    • Možete i nastaviti upotrebljavati ključ za potpisivanje aplikacije kao ključ za prijenos.
  2. Kopirajte otiske prstiju (MD5, SHA-1 i SHA-256) certifikata za potpisivanje aplikacije.
    • Za svrhe testiranja možda ćete morati registrirati certifikat ključa za prijenos pri davateljima API-jeva pomoću otiska prsta certifikata i ključa za potpisivanje aplikacije.

4. korak: potpišite sljedeće ažuriranje aplikacije ključem za prijenos

Kada objavljujete ažuriranja aplikacije, morate ih potpisati ključem za prijenos.

  • Ako niste generirali novi ključ za prijenos: nastavite upotrebljavati izvorni ključ za potpisivanje aplikacije da biste potpisali izdanja prije nego što ih prenesete na Google Play. Ako izgubite ključ za potpisivanje aplikacije, možete generirati novi ključ za prijenos i registrirati ga na Googleu radi daljnjeg ažuriranja aplikacije.
  • Ako ste generirali novi ključ za prijenos: koristite novi ključ za prijenos da biste potpisali izdanja prije nego što ih prenesete na Google Play. Nakon što ih prenesete, Google provjerava izdanje za ključ za prijenos radi provjere vašeg identiteta. Ako izgubite ključ za prijenos, možete se obratiti podršci da ga poništi.

Izrada ključa za prijenos i ažuriranje spremišta ključeva

Radi veće sigurnosti preporučuje se potpisivanje aplikacije novim ključem za prijenos, a ne ključem za potpisivanje aplikacije.

Ključ za prijenos možete izraditi prilikom uključivanja u potpisivanje aplikacije koje pruža Google Play ili kasnije, u odjeljku Upravljanje izdanjima > Potpisivanje aplikacije.

Evo kako izraditi ključ za prijenos:

  1. Slijedite upute na web-lokaciji Android Developers. Spremite ključ na sigurno mjesto.
  2. Izvezite certifikat za ključ za prijenos u PEM formatu. Zamijenite sljedeće podcrtane argumente:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Kada se to zatraži tijekom postupka izdavanja, prenesite certifikat da biste ga registrirali na Googleu.

Kada koristite ključ za prijenos:

  • Ključ za prijenos registriran je samo na Googleu radi autentifikacije identiteta autora aplikacije.
  • Potpis se uklanja iz prenesenih APK-ova prije nego što se pošalju korisnicima.
Ograničenja ključa za prijenos
  • Mora biti RSA ključ od najmanje 2048 bitova.
  • DSA, EC i RSA ključevi manji od 2048 bitova nisu podržani.
Ažuriranje spremišta ključeva

Nakon što izradite ključ za prijenos, evo nekih lokacija koje biste trebali provjeriti i ažurirati:

  • lokalni uređaji
  • zaključani poslužitelj na lokaciji (različiti ACL-ovi)
  • uređaj u oblaku (različiti ACL-ovi)
  • namjenske usluge za upravljanje tajnama
  • (Git) spremišta.

Nadogradnja ključa za potpisivanje aplikacije za nova instaliranja

U nekim okolnostima možete zatražiti nadogradnju ključa za potpisivanje aplikacije. Vaš novi ključ upotrebljavat će se za potpisivanje novih instaliranja i ažuriranja aplikacije. Stari ključ za potpisivanje aplikacije i dalje će se upotrebljavati za potpisivanje ažuriranja za korisnike koji su aplikaciju instalirali prije nadogradnje ključa.

Za svaku se aplikaciju ključ za potpisivanje može nadograditi samo jedanput. U malo vjerojatnom slučaju da imate više aplikacija koje se potpisuju istim ključem radi pokretanja u istom procesu, za te aplikacije nećete moći upotrebljavati nadograđeni ključ.

Razlozi zbog kojih se može tražiti nadogradnja ključa za potpisivanje aplikacije:

  • Potreban vam je kriptografski snažniji ključ.
  • Ključ za potpisivanje aplikacije bio je ugrožen.0

Napomena: podnošenje zahtjeva za nadogradnju ključa za potpisivanje aplikacije na Play konzoli nije povezano s rotacijom ključa uvedenoj u trećoj verziji potpisne sheme APK Signature Scheme v3 za Android P i novije verzije. Google Play trenutačno ne podržava tu vrstu rotacije ključa.

Važne napomene koje je potrebno razmotriti prije podnošenja zahtjeva za nadogradnju ključa

Prije nego što zatražite nadogradnju ključa, važno je da razumijete koje ćete promjene možda trebati napraviti nakon dovršetka nadogradnje.

  • Ako isti ključ za potpisivanje aplikacije upotrebljavate za više aplikacija radi dijeljenja podataka ili koda među aplikacijama, trebate ažurirati svoje aplikacije tako da prepoznaju certifikate novog i starog ključa.
  • Ako vaša aplikacija upotrebljava API-je, obavezno prije objave ažuriranja aplikacije registrirajte certifikate za novi i stari ključ za potpisivanje aplikacije kod davatelja API-ja kako bi API-ji i dalje funkcionirali. Certifikati su dostupni na stranici Potpisivanje aplikacije na Play konzoli.  
  • Ako mnogi vaši korisnici instaliraju ažuriranja ravnopravnim dijeljenjem, moći će instalirati samo ažuriranja potpisana istim ključem kojim je potpisana verzija aplikacije koju su već instalirali. Ako ne mogu ažurirati aplikaciju jer imaju verziju aplikacije koja je potpisana nekim drugim ključem, mogu deinstalirati i ponovo instalirati aplikaciju da bi primili ažuriranu verziju.
Slanje zahtjeva za nadogradnju ključa za nova instaliranja
  1. Prijavite se na Play konzolu.
  2. Odaberite aplikaciju.
  3. Na lijevom izborniku odaberite Upravljanje izdanjima > Potpisivanje aplikacije.
  4. Na kartici "Nadogradnja ključa za potpisivanje aplikacije za nova instaliranja" odaberite Zatražite nadogradnju ključa.
  5. Odaberite neku opciju.
    • Ovisno o opciji koju odaberete, možda ćete se trebati obratiti podršci radi izvršenja zahtjeva.
  6. Odaberite da Google generira novi ključ za potpisivanje aplikacije (preporučeno) ili prenesite neki drugi.
    • Ako ste prije upotrebljavali isti ključ za potpisivanje aplikacije i za prijenos, nakon nadogradnje ključa za potpisivanje aplikacije možete nastaviti upotrebljavati stari ključ za potpisivanje kao ključ za prijenos ili možete generirati novi ključ za prijenos.

Najbolji primjeri iz prakse

  • Ako svoju aplikaciju distribuirate i izvan Google Playa ili to namjeravate kasnije, možete generirati ključ za potpisivanje aplikacije koji želite upotrebljavati za svaku trgovinu aplikacija i zatim ga prenijeti na Google prilikom uključivanja u potpisivanje aplikacije koje pruža Google Play.
  • Da biste zaštitili svoj račun, uključite Potvrdu u dva koraka za račune koji imaju pristup vašoj Play konzoli.
  • Nakon objavljivanja paketa aplikacije u verziji za testiranje ili produkciju, možete otvoriti alat za istraživanje paketa aplikacije i preuzeti ZIP arhivu sa svim APK-ovima za određeni uređaj. Ti su APK-ovi potpisani ključem za potpisivanje aplikacije i možete ih instalirati u ZIP arhivu na uređaju pomoću uslužnog programa naredbenog retka bundletool.
  • Radi veće sigurnosti generirajte novi ključ za prijenos koji se razlikuje od ključa za potpisivanje aplikacije.
  • Ako želite testirati APK potpisan ključem za prijenos, morate registrirati svoj ključ za prijenos na bilo kojoj usluzi ili API-ju koji upotrebljavaju potpis vaše aplikacije za autentifikaciju (na primjer Google Maps API ili Facebook SDK).
  • Ako upotrebljavate bilo koji Google API, preporučujemo da na Google Cloud Consoleu registrirate certifikat za prijenos za svoju aplikaciju.

Ključ za prijenos izgubljen je ili ugrožen?

Ako ste privatni ključ za prijenos izgubili ili je ugrožen, možete izraditi novi i zamoliti vlasnika računa da zatraži od podrške da poništi stari ključ. Kada se bude obraćao podršci, vlasnik računa mora priložiti datoteku upload_certificate.pem.

Nakon što naš tim za podršku registrira novi ključ za prijenos, primit ćete e-poruku i zatim možete ažurirati spremišta ključeva i registrirati svoj ključ pri davateljima API-jeva.

Važno: poništavanje ključa za prijenos ne utječe na ključ za potpisivanje aplikacije koji Google Play upotrebljava za ponovno potpisivanje APK-ova prije nego što ih isporuči korisnicima.

Je li to bilo korisno?
Kako to možemo poboljšati?