Keystore: lényege, milyen formátumok léteznek és hogyan működik

Szerző: IT Sectr Megjelenés: 2026-04-16 Olvasási idő: 10 perc

A Keystore egy védett kriptográfiai tároló, amelyet Android-fejlesztésben használnak privát kulcsok és alkalmazás-aláírási tanúsítványok tárolására. A Android Developers Documentation, 2026 szerint minden APK-nak vagy App Bundle-nek a Google Play-ben való közzététel előtt digitális aláírással kell rendelkeznie a Keystore-ből. Tekintsük át a Keystore formátumokat, a létrehozást és a projektben való használatot.

Főbb pontok

  • Keystore — konténer privát kulcsok és tanúsítványok tárolására, amelyek Android-alkalmazások aláírásához használatosak
  • JKS (Java KeyStore) — elavult formátum, csak a Java ökoszisztémára korlátozódik
  • PKCS12 — szabványosított formátum, amelyet a Google ajánl az új projektekhez
  • Keytool — a JDK eszköze a Keystore parancssorból történő létrehozásához és kezeléséhez
  • A Keystore elvesztése az alkalmazás Google Play-ben történő frissítésének lehetetlenségét jelenti — a biztonsági mentés kötelező

Mi az a Keystore

Keystore (KeyStore) — a Java Cryptography Architecture (JCA) szabványos mechanizmusa kriptográfiai kulcsok, tanúsítványok és megbízható bejegyzések tárolására. Az Android-fejlesztésben a Keystore a privát kulcs tárolására szolgál, amellyel az alkalmazást a közzététel előtt aláírják. Az aláírás garantálja, hogy az alkalmazást valóban a megadott fejlesztő adta ki, és a kódja nem változott a közzététel után. Minden alkalmazásfrissítést ugyanazzal a kulccsal kell aláírni, ellenkező esetben a Google Play elutasítja az APK-t vagy App Bundle-t.

A Keystore több bejegyzést (aliast) tartalmazhat, amelyek mindegyike egy kulcspárt (privát és nyilvános) képvisel tanúsítvánnyal együtt. Alias — a bejegyzés egyedi neve, amely alapján az alkalmazás a kulcshoz fér hozzá az aláírás során. Egy tipikus Android-projektben a Keystore egy bejegyzést tartalmaz a kiadási verzió aláírásához, és további bejegyzéseket tartalmazhat a debug-építmények aláírásához. A Google Play Console megjeleníti a tanúsítvány SHA-1 és SHA-256 ujjlenyomatait minden feltöltött alkalmazáshoz.

Az Android Studio beépített támogatást nyújt a Keystore-hoz a Build → Generate Signed Bundle / APK menün keresztül. Az aláírás varázsló lehetővé teszi új Keystore létrehozását vagy meglévő kiválasztását, az alias, a Keystore- és kulcsjelszavak, valamint a tanúsítási adatok (szervezet neve, város, ország) megadását. Ezek az adatok beágyazódnak a tanúsítványba, és láthatóak a felhasználók számára az APK-aláírás ellenőrzésekor. A Google Play megköveteli, hogy a tanúsítvány érvényessége legalább 25 év legyen — az Android ellenőrzi a lejárati dátumot az alkalmazás telepítésekor.

Miért fontos a Keystore az Android számára

Az alkalmazás frissítése a Google Play-ben csak ugyanazzal a kulccsal lehetséges, amellyel az első verziót aláírták. Ha a Keystore elveszik, a frissítés közzététele lehetetlen — az alkalmazást új csomagnév (package name) alatt kell újra kiadni. A Google Play Console Help (2026) szerint az alkalmazás aláírási kulcsa csak a Google Play App Signingen keresztül állítható helyre — ez a szolgáltatás a Google oldalán tárolja a kulcsot. Ha a fejlesztő ezt a lehetőséget használta, a helyi Keystore elvesztése nem kritikus.

Hogyan működik a Keystore

Az Android-alkalmazás aláírásának folyamata magában foglalja az APK tartalmának kivonatolását (hash) és annak titkosítását a Keystore-ből származó privát kulccsal. Az Android SDK Build Tools tartalmazza az apksigner eszközt, amely az aláírást APK Signature Scheme v2 (vagy Android 9+ esetén v3) formátumban végzi. Az alkalmazás telepítésekor az Android ellenőrzi az aláírást: visszafejti az aláírást a tanúsítvány nyilvános kulcsával, összehasonlítja az APK hash-jét az eredetivel — ha a hash-ek nem egyeznek, a telepítés elutasításra kerül.

Az Android több aláírási sémát támogat: v1 (JAR signing), v2 (APK Signature Scheme), v3 (APK Signature Scheme kulcsrotációs támogatással) és v4 (Android 11+ inkrementális telepítései). A Google Play v2 vagy v3 sémát követel meg az új alkalmazásokhoz. Az apksigner automatikusan hozzáadja az összes szükséges sémát az aláírás során, ha a kulcs támogatja a megfelelő algoritmusokat. Az Android 11+ támogatja az ADB-telepítést v4 aláírással, ami felgyorsítja a nagy APK-fájlok inkrementális betöltését az eszközre.

Algoritmusok: Az Android az RSA-2048 vagy ECDSA P-256 használatát ajánlja az aláírási kulcshoz. A tanúsítványnak X.509 v3-nak kell lennie. Az Android ellenőrzi, hogy a tanúsítvány érvényes-e a telepítés pillanatában — ha lejárt, a telepítés blokkolva van. Éppen ezért a Google azt ajánlja, hogy a tanúsítvány érvényességi idejét legalább 25 évre állítsák be. A Google Play App Signing két kulcsot használ: az alkalmazás aláírási kulcsát (app signing key) és a feltöltési kulcsot (upload key) — a feltöltési kulcsot a fejlesztő használja az APK Console-ba történő feltöltéséhez, a Google pedig a fő kulccsal írja alá az alkalmazást a felhasználók számára.

Keystore formátumok: JKS és PKCS12

A Java két fő Keystore-formátumot támogat: JKS (Java KeyStore) — az Oracle saját formátuma, amely a JDK 1.2 óta létezik, és PKCS12 — az RSA Laboratories által szabványosított Public-Key Cryptography Standards #12 formátum. A JKS saját adattárolási formátumot használ, és csak a Java ökoszisztémában támogatott. A PKCS12 egy nyílt szabvány, amelyet a Java, .NET, OpenSSL, Python (cryptography) és a legtöbb más kriptográfiai könyvtár támogat.

A Google Play a PKCS12-t ajánlja preferált formátumként a 2021 után létrehozott új Keystore-okhoz. A JDK 9 és újabb verziók alapértelmezés szerint PKCS12 formátumban hoznak létre Keystore-ot (korábban a JKS volt az alapértelmezett). A PKCS12 fő előnye a kompatibilitás: a .p12 fájl bármilyen, Java-hoz nem kötött környezetben megnyitható. Az OpenSSL képes kinyerni a tanúsítványokat a PKCS12-ből és PEM formátumba konvertálni őket. A JKS-fájlok olvasásához JDK-eszközök szükségesek, és az OpenSSL nem tudja feldolgozni őket.

A formátumok közötti konverziót a JDK keytool eszköze végzi. A JKS-ről PKCS12-re történő migráció során meg kell győződni arról, hogy az összes alias és jelszó megfelelően átkerült. A keytool -importkeystore parancs lehetővé teszi az egyik Keystore tartalmának importálását a másikba, formátumtól függetlenül. A konverzió után a régi JKS-fájlt érdemes törölni a kulcsverziókkal kapcsolatos zavar elkerülése érdekében. Az Android Studio mindkét formátumot támogatja aláírt építmény létrehozásakor.

JellemzőJKSPKCS12
SzabványSaját (Oracle)Nyílt (RSA Labs)
Kiterjesztés.jks / .keystore.p12 / .pfx
TámogatásCsak JavaJava, OpenSSL, .NET, Python
AlapértelmezettJDK 8-igJDK 9+
Google ajánlásElavultPreferált

Keystore létrehozása keytool segítségével

A keytool eszköz a JDK (Java Development Kit) része, és teljes parancskészletet biztosít a Keystore létrehozásához, megtekintéséhez és kezeléséhez. Új Keystore létrehozásához egy kulcspárral a keytool -genkeypair parancsot használjuk a PKCS12 formátum, RSA algoritmus, kulcsméret és tanúsítvány érvényességi idő megadásával. A Google Play megköveteli a tanúsítvány érvényességét legalább 25 évre (9125 nap) — ezt az értéket ajánlott a -validity paraméterben megadni.

Új Keystore létrehozása

Példa Keystore generálására PKCS12 formátumban Android-projekthez. A -dname paraméter tartalmazza a tanúsítvány X.500 Distinguished Name-jét. A -ext paraméter szükség esetén bekapcsolja a Subject Alternative Name-t — Android esetében a Basic Constraints elegendő:

bash
# PKCS12 Keystore létrehozása Androidhoz
keytool -genkeypair -alias "upload_key" \
  -keyalg RSA -keysize 2048 -validity 9125 \
  -keystore "release-keystore.p12" \
  -storetype PKCS12 \
  -dname "CN=Developer,O=Company,C=RU"

A Keytool kérni fogja a Keystore jelszavát és a kulcs jelszavát (lehet azonos is). A -storetype PKCS12 paraméter modern formátumban hozza létre a fájlt. A -keysize 2048 megfelel a Google minimális RSA-kulcsméretre vonatkozó követelményeinek. A -validity 9125 (25 év) biztosítja a kompatibilitást az alkalmazás teljes várható életciklusa alatt. A Keystore létrehozása után ajánlott ellenőrizni a tartalmát a keytool -list -v -keystore release-keystore.p12 paranccsal.

A Keystore tartalmának megtekintése

A Keystore bejegyzéseinek ellenőrzéséhez a -list jelzővel ellátott parancsot használjuk. A kimenet tartalmazza az aliast, a létrehozás és lejárat dátumát, a bejegyzés típusát és az SHA-256 ujjlenyomatokat. Az Android Studio ugyanezt az információt jeleníti meg a Generate Signed Bundle / APK párbeszédablakban meglévő Keystore kiválasztásakor:

bash
# Keystore-bejegyzések megtekintése
keytool -list -v -keystore "release-keystore.p12" \
  -storetype PKCS12

Keystore használata CI/CD-ben

A CI/CD-folyamatban a Keystore-t biztonságosan kell tárolni, és kompromittálódás kockázata nélkül kell átadni a build-ügynöknek. A GitHub Actions Secrets szolgáltatást biztosít bináris fájlok base64 formátumban történő tárolásához. A Keystore-t a base64 paranccsal kódoljuk, a kapott karakterláncot a repó titkai között tároljuk, a build fázisában pedig visszafejtjük fájllá. A GitLab CI hasonló mechanizmust használ a Variables segítségével File típussal.

Példa CI-build konfigurálására Keystore-ral a GitHub Actions-ben: a Keystore visszafejtése a titokból, a Gradle tulajdonságok konfigurálása és az aláírt build végrehajtása. A Gradle Android beépülő modulja a Keystore elérési útját és a jelszavakat a keystore.properties fájlból (a .gitignore-ból kizárva a helyi fejlesztéshez) vagy a CI-rendszer környezeti változóiból olvassa:

groovy
// build.gradle (app) — aláírás konfiguráció
@Override
android {
    signingConfigs {
        release {
            storeFile file("release-keystore.p12")
            storePassword System.getenv("STORE_PASSWORD")
            keyAlias System.getenv("KEY_ALIAS")
            keyPassword System.getenv("KEY_PASSWORD")
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

A Gradle a CI-rendszer által beállított környezeti változókat olvassa. A Keystore fájlnak az alkalmazásmodul gyökérkönyvtárában kell elhelyezkednie, a storeFile-ban megadottak szerint. A biztonság érdekében soha ne tároljon jelszavakat a repóban — használja a CI-rendszer Secrets szolgáltatását. A Fastlane Androidhoz a supply beépülő modult biztosítja, amely a Google Play Console-lal működik, de az APK aláírásához továbbra is helyi Keystore szükséges az ügynökön.

Alternatíva a Google Play App Signing. Ennek az opciónak a használatakor a fejlesztő csak a feltöltési kulcsot (upload key) tölti fel a Google Play-be, a Google pedig a saját kulcsával írja alá a végső APK-t. Ebben az esetben a Keystore csak a feltöltési kulcs létrehozására szolgál, és elvesztése nem blokkolja a frissítéseket — új upload key generálható és regisztrálható a Console-ban. A Google Play App Signing 2021 augusztusa óta kötelező az új alkalmazások számára.

Keystore biztonsága és biztonsági mentése

A Keystore elvesztése az egyik legkritikusabb probléma az Android-fejlesztésben. Biztonsági mentés nélkül nem adható ki frissítés a meglévő alkalmazáshoz — a Google Play elutasítja a más kulccsal aláírt APK-t. Javasolt legalább két biztonsági másolatot tárolni a Keystore-ról különböző fizikai vagy felhőalapú tárolókban: például titkosított fájl a csapat felhőtárhelyén és fizikai adathordozó a szervezet széfjében. A Keystore és a kulcs jelszavait a fájltól elkülönítve, például hozzáférés-vezérléssel ellátott jelszókezelőben tároljuk.

Az Android Studio új Keystore létrehozásakor a Generate Signed Bundle / APK párbeszédablakban felajánlja az elérési utak megjegyzését a jövőbeli build-ekhez. Maga a fejlesztői környezet azonban nem készít biztonsági mentést — ez a fejlesztő felelőssége. Csapatmunkához javasolt a Google Play App Signing használata az upload key biztonságos csatornán történő átadásával az összes csapattagnak. A Gradle lehetővé teszi a debug-építmények aláírását automatikusan generált debug.keystore-ral, amely nem igényel biztonsági mentést — azonos az Android Studio összes telepítésénél.

A Keystore biztonsága átvitelkor: a .p12 vagy .jks fájlt csak titkosított csatornákon (SFTP, HTTPS, titkosított e-mail mellékletek) szabad átvinni. Soha ne helyezze a Keystore-t a forráskód repozitóriumba — még privátba sem. A GitGuardian vagy GitHub secret scanning automatikusan észleli a hitelesítő adatok közzétételét, de a Keystore repóban való tárolása továbbra is biztonsági vétség. CI/CD-hez használja a platform titkosítási mechanizmusát (GitHub Actions Secrets, GitLab CI Variables, Jenkins Credentials) infrastruktúra-szintű titkosítással.

Gyakran ismételt kérdések

Mi történik, ha elveszítem a Keystore-t az alkalmazás közzététele után?

Ha Google Play App Signing használ, csak az upload key veszett el — generálhat egy újat, és regisztrálhatja a Google Play Console-ban. Ha az App Signing nincs engedélyezve, a Keystore elvesztése az alkalmazás frissíthetetlenségét jelenti — új alkalmazást kell közzétennie más package name-nel.

Használható egyetlen Keystore több alkalmazáshoz?

Igen, egyetlen Keystore több aliast (bejegyzést) tartalmazhat különböző kulcsokkal különböző alkalmazásokhoz. Minden alkalmazáshoz javasolt külön aliast használni ugyanazon a Keystore-on belül. A Google Play támogatja a különböző kulcsokat különböző alkalmazásokhoz — nincs korlátozás egyetlen Keystore több projekthez való használatára.

Melyik aláírási algoritmus jobb — RSA vagy ECDSA?

Az Android mindkét algoritmust támogatja, de az ECDSA P-256 előnyösebb: az RSA-2048-cal egyenértékű biztonságot nyújt kisebb aláírásmérettel és gyorsabb ellenőrzéssel. Ha azonban kompatibilitás szükséges az Android 4.4 és régebbi verziókkal, válassza az RSA-t — az ECDSA csak Android 4.3+-tól támogatott.

Miért követel meg a Google Play 25 éves vagy hosszabb érvényességi idejű tanúsítványt?

Az Android ellenőrzi a tanúsítvány érvényességi idejét az alkalmazás telepítésekor. Ha a tanúsítvány lejárt, a telepítés blokkolva van — még akkor is, ha egy meglévő alkalmazás frissítéséről van szó. A 25 év a Google által ajánlott minimális időtartam, amely lefedi a mobilalkalmazás teljes várható életciklusát anélkül, hogy új tanúsítványt kellene kiadni.

Mi a különbség a debug.keystore és a kiadási Keystore között?

A Debug.keystore automatikusan az Android SDK által jön létre, és debug-építmények aláírására szolgál. Azonos az Android Studio összes telepítésénél (alapértelmezett jelszó: android). A kiadási Keystore-t a fejlesztő hozza létre a Google Play-ben közzétett verzió aláírásához, és biztonságos helyen kell tárolni — elvesztése kritikus.

Összefoglalás

  • Keystore — kriptográfiai tároló az Android-alkalmazások aláírásához használt privát kulcs számára
  • JKS — elavult formátum, PKCS12 — a Google által ajánlott modern szabvány
  • Keytool — JDK eszköz a Keystore parancssorból történő létrehozásához és kezeléséhez
  • Tanúsítvány érvényességi ideje legalább 25 év (9125 nap) kell legyen a Google Play számára
  • CI/CD a Keystore platformtitkokban való tárolását igényli base64 kódolással
  • Google Play App Signing csökkenti a kulcsvesztés kockázatát a Google oldalán való tárolással
  • Biztonsági mentés kötelező — a kulcs elvesztése blokkolja az alkalmazásfrissítéseket

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is