Keystore: mohiyati, qanday formatlari bor va qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-04-16 O'qish vaqti: 10 daq

Keystore — bu Android ishlab chiqishda ilovalarni imzolash uchun shaxsiy kalitlar va sertifikatlarni saqlash uchun ishlatiladigan himoyalangan kriptografik ombor. Android Developers Documentation, 2026-ga ko'ra, Google Play-da nashr etishdan oldin har bir APK yoki App Bundle Keystore-dan raqamli imzo bilan imzolanishi kerak. Keling, Keystore formatlarini, yaratishni va loyihada foydalanishni ko'rib chiqaylik.

Asosiy nuqtalar

  • Keystore — Android ilovalarini imzolash uchun ishlatiladigan shaxsiy kalitlar va sertifikatlarni saqlash uchun konteyner
  • JKS (Java KeyStore) — eskirgan format, faqat Java ekotizimi bilan cheklangan
  • PKCS12 — Google tomonidan yangi loyihalar uchun tavsiya etilgan standartlashtirilgan format
  • Keytool — buyruq satridan Keystore yaratish va boshqarish uchun JDK vositasi
  • Keystore yo'qolishi Google Play-da ilovani yangilash imkoniyatsizligini anglatadi — zaxira nusxa majburiy

Keystore nima

Keystore (KeyStore) — bu kriptografik kalitlar, sertifikatlar va ishonchli yozuvlarni saqlash uchun Java Cryptography Architecture (JCA) standart mexanizmi. Android ishlab chiqishda Keystore nashr etishdan oldin ilova imzolanadigan shaxsiy kalitni saqlash uchun ishlatiladi. Imzo ilova haqiqatan ham ko'rsatilgan dasturchi tomonidan chiqarilganligini va uning kodi nashrdan keyin o'zgartirilmaganligini kafolatlaydi. Har bir ilova yangilanishi bir xil kalit bilan imzolanishi kerak, aks holda Google Play APK yoki App Bundle-ni rad etadi.

Keystore bir nechta yozuvlarni (alias) o'z ichiga olishi mumkin, ularning har biri sertifikat bilan birga kalitlar juftligini (shaxsiy va ochiq) ifodalaydi. Alias — bu imzolash vaqtida ilova kalitga murojaat qiladigan noyob yozuv nomi. Odatdagi Android loyihasida Keystore reliz versiyasini imzolash uchun bitta yozuvni o'z ichiga oladi va tuzatish (debug) qurilmalarini imzolash uchun qo'shimchalari bo'lishi mumkin. Google Play Console yuklangan har bir ilova uchun sertifikatning SHA-1 va SHA-256 barmoq izlarini ko'rsatadi.

Android Studio Build → Generate Signed Bundle / APK menyusi orqali Keystore uchun o'rnatilgan qo'llab-quvvatlashni o'z ichiga oladi. Imzolash ustasi Android Studio yangi Keystore yaratish yoki mavjudini tanlash, alias, Keystore va kalit parollarini, shuningdek sertifikat ma'lumotlarini (tashkilot nomi, shahar, davlat) ko'rsatish imkonini beradi. Bu ma'lumotlar sertifikatga kiritiladi va foydalanuvchilarga APK imzosini tekshirishda ko'rinadi. Google Play sertifikat amal qilish muddati kamida 25 yil bo'lishini talab qiladi — Android ilova o'rnatilganda amal qilish muddatini tekshiradi.

Keystore Android uchun nima uchun muhim

Ilova yangilanishi Google Play-da faqat birinchi versiya imzolangan bir xil kalit bilan mumkin. Keystore yo'qolsa, yangilanishni nashr etish imkonsiz bo'ladi — ilova yangi paket nomi (package name) ostida qayta chiqarilishi kerak bo'ladi. Google Play Console Help (2026)-ga ko'ra, ilova imzo kaliti faqat Google Play App Signing orqali tiklanishi mumkin — bu xizmat kalitni Google tomonda saqlaydi. Agar dasturchi ushbu variantdan foydalangan bo'lsa, mahalliy Keystore yo'qolishi muhim emas.

Keystore qanday ishlaydi

Android ilovasini imzolash jarayoni APK mazmunining xeshi (hash) yaratish va uni Keystore-dan shaxsiy kalit bilan shifrlashni o'z ichiga oladi. Android SDK Build Tools APK Signature Scheme v2 (yoki Android 9+ uchun v3) formatida imzoni bajaradigan apksigner vositasini o'z ichiga oladi. Ilova o'rnatilayotganda Android imzoni tekshiradi: imzoni sertifikatning ochiq kaliti bilan deshifrlaydi, APK xeshini asl nusxa bilan solishtiradi — agar xeshlar mos kelmasa, o'rnatish rad etiladi.

Android bir nechta imzo sxemalarini qo'llab-quvvatlaydi: v1 (JAR signing), v2 (APK Signature Scheme), v3 (APK Signature Scheme kalit aylanishi bilan) va v4 (Android 11+ inkremental o'rnatishlari). Google Play yangi ilovalar uchun v2 yoki v3 ni talab qiladi. apksigner imzolash vaqtida avtomatik ravishda barcha kerakli sxemalarni qo'shadi, agar kalit tegishli algoritmlarni qo'llab-quvvatlasa. Android 11+ v4 imzosi bilan ADB o'rnatishni qo'llab-quvvatlaydi, bu katta APK fayllarini qurilmaga inkremental yuklashni tezlashtiradi.

Algoritmlar: Android imzo kaliti uchun RSA-2048 yoki ECDSA P-256 dan foydalanishni tavsiya qiladi. Sertifikat X.509 v3 bo'lishi kerak. Android o'rnatish vaqtida sertifikatning amal qilish muddatini tekshiradi — agar muddati tugagan bo'lsa, o'rnatish bloklanadi. Aynan shuning uchun Google sertifikatning amal qilish muddatini kamida 25 yil qilishni tavsiya qiladi. Google Play App Signing ikkita kalitdan foydalanadi: ilova imzo kaliti (app signing key) va yuklash kaliti (upload key) — yuklash kaliti dasturchi tomonidan APK ni Console-ga yuklash uchun ishlatiladi, Google esa ilovani foydalanuvchilar uchun asosiy kalit bilan imzolaydi.

Keystore formatlari: JKS va PKCS12

Java ikkita asosiy Keystore formatini qo'llab-quvvatlaydi: JKS (Java KeyStore) — JDK 1.2 dan mavjud bo'lgan Oracle mulkiy formati, va PKCS12 — RSA Laboratories tomonidan Public-Key Cryptography Standards #12 standartlashtirilgan formati. JKS o'z ma'lumot saqlash formatidan foydalanadi va faqat Java ekotizimida qo'llab-quvvatlanadi. PKCS12 Java, .NET, OpenSSL, Python (cryptography) va boshqa kriptografik kutubxonalarning ko'pchiligi tomonidan qo'llab-quvvatlanadigan ochiq standartdir.

Google Play 2021 yildan keyin yaratilgan yangi Keystore-lar uchun PKCS12 ni afzal format sifatida tavsiya qiladi. JDK 9 va undan yangilari sukut bo'yicha PKCS12 formatida Keystore yaratadi (ilgari sukut bo'yicha JKS edi). PKCS12 ning asosiy afzalligi moslik: .p12 fayli Java-ga bog'liq bo'lmagan har qanday muhitda ochilishi mumkin. OpenSSL PKCS12 dan sertifikatlarni chiqarib, ularni PEM formatiga o'zgartirishi mumkin. JKS fayllarini o'qish uchun JDK vositalari kerak va ular OpenSSL tomonidan qayta ishlanmaydi.

Formatlar o'rtasidagi konvertatsiya JDK dan keytool vositasi bilan amalga oshiriladi. JKS dan PKCS12 ga migratsiya paytida barcha alias va parollarning to'g'ri ko'chirilganligiga ishonch hosil qilish kerak. keytool -importkeystore buyrug'i formatdan qat'iy nazar bir Keystore mazmunini boshqasiga import qilish imkonini beradi. Konvertatsiyadan so'ng eski JKS faylini o'chirish yaxshiroq, kalit versiyalari bilan chalkashmaslik uchun. Android Studio imzolangan qurilma yaratishda ikkala formatni ham qo'llab-quvvatlaydi.

XarakteristikaJKSPKCS12
StandartMulkiy (Oracle)Ochiq (RSA Labs)
Kengaytma.jks / .keystore.p12 / .pfx
Qo'llab-quvvatlashFaqat JavaJava, OpenSSL, .NET, Python
Sukut bo'yichaJDK 8 gachaJDK 9+
Google tavsiyasiEskirganAfzal

Keytool orqali Keystore yaratish

keytool vositasi JDK (Java Development Kit) tarkibiga kiradi va Keystore yaratish, ko'rish va boshqarish uchun to'liq buyruqlar to'plamini ta'minlaydi. Bir juft kalit bilan yangi Keystore yaratish uchun PKCS12 formati, RSA algoritmi, kalit o'lchami va sertifikat amal qilish muddati ko'rsatilgan holda keytool -genkeypair buyrug'i ishlatiladi. Google Play sertifikat amal qilish muddati kamida 25 yil (9125 kun) bo'lishini talab qiladi — bu qiymatni -validity parametrida ko'rsatish tavsiya etiladi.

Yangi Keystore yaratish

Android loyihasi uchun PKCS12 formatida Keystore generatsiyasi namunasi. -dname parametri sertifikatning X.500 Distinguished Name-ni o'z ichiga oladi. -ext parametri kerak bo'lsa Subject Alternative Name ni qo'shadi — Android uchun Basic Constraints yetarli:

bash
# Android uchun PKCS12 Keystore yaratish
keytool -genkeypair -alias "upload_key" \
  -keyalg RSA -keysize 2048 -validity 9125 \
  -keystore "release-keystore.p12" \
  -storetype PKCS12 \
  -dname "CN=Developer,O=Company,C=RU"

Keytool Keystore paroli va kalit parolini so'raydi (bir xil bo'lishi mumkin). -storetype PKCS12 parametri faylni zamonaviy formatda yaratadi. -keysize 2048 Google-ning minimal RSA kalit o'lchami talablariga javob beradi. -validity 9125 (25 yil) ilovaning kutilgan butun hayotiy tsikli davomida moslikni ta'minlaydi. Keystore yaratilgandan so'ng, uning mazmunini keytool -list -v -keystore release-keystore.p12 buyrug'i bilan tekshirish tavsiya etiladi.

Keystore mazmunini ko'rish

Keystore yozuvlarini tekshirish uchun -list bayrog'i bilan buyruq ishlatiladi. Natija alias, yaratilish va amal qilish muddati tugash sanalari, yozuv turi va SHA-256 barmoq izlarini o'z ichiga oladi. Android Studio mavjud Keystore ni tanlashda Generate Signed Bundle / APK dialog oynasida bir xil ma'lumotlarni ko'rsatadi:

bash
# Keystore yozuvlarini ko'rish
keytool -list -v -keystore "release-keystore.p12" \
  -storetype PKCS12

CI/CD da Keystore ishlatish

CI/CD quvurida Keystore himoyalangan holda saqlanishi va xavfsizlik xatarsiz qurilma agentiga uzatilishi kerak. GitHub Actions ikkilik fayllarni base64 formatida saqlash uchun Secrets-ni ta'minlaydi. Keystore base64 buyrug'i bilan kodlanadi, olingan satr repozitoriy sirlarida saqlanadi va qurilma bosqichida faylga qayta dekodlanadi. GitLab CI File turidagi Variables orqali shu kabi mexanizmdan foydalanadi.

GitHub Actions da Keystore bilan CI qurilmasini sozlash namunasi sirtdan Keystore dekodlash, Gradle xususiyatlarini sozlash va imzolangan qurilmani bajarishni o'z ichiga oladi. Gradle Android plagini Keystore yo'lini va parollarni keystore.properties faylidan (mahalliy ishlab chiqish uchun .gitignore dan chiqarilgan) yoki CI tizimining muhit o'zgaruvchilaridan o'qiydi:

groovy
// build.gradle (app) — imzo sozlamalari
@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
        }
    }
}

Gradle CI tizimi tomonidan o'rnatilgan muhit o'zgaruvchilarini o'qiydi. Keystore fayli storeFile da ko'rsatilgandek ilova modulining ildiz katalogida joylashgan bo'lishi kerak. Xavfsizlik uchun parollarni hech qachon repozitoriyada saqlamang — CI tizimining Secrets-dan foydalaning. Fastlane Android uchun Google Play Console bilan ishlaydigan supply plaginini ta'minlaydi, ammo APK imzosi baribir agentda mahalliy Keystore ni talab qiladi.

Muqobil Google Play App Signing dir. Ushbu variantdan foydalanganda dasturchi Google Play ga faqat yuklash kalitini (upload key) yuklaydi, Google esa yakuniy APK ni o'z kaliti bilan imzolaydi. Bu holda Keystore faqat yuklash kalitini yaratish uchun ishlatiladi va uning yo'qolishi yangilanishlarni bloklamaydi — yangi upload key yaratilishi va Console da ro'yxatdan o'tkazilishi mumkin. Google Play App Signing 2021 yil avgustidan boshlab yangi ilovalar uchun majburiydir.

Keystore xavfsizligi va zaxira nusxasi

Keystore yo'qolishi Android ishlab chiqishdagi eng muhim muammolardan biridir. Zaxira nusxasisiz Keystore mavjud ilovaning yangilanishini chiqarish mumkin emas — Google Play boshqa kalit bilan imzolangan APK ni rad etadi. Keystore ning kamida ikki zaxira nusxasini turli jismoniy yoki bulut omborlarida saqlash tavsiya etiladi: masalan, jamoaning bulut omborida shifrlangan fayl va tashkilot seyfidagi jismoniy tashuvchi. Keystore va kalit parollari fayldan alohida, masalan, kirish nazorati bilan parol menejerida saqlanadi.

Android Studio Generate Signed Bundle / APK dialog oynasida yangi Keystore yaratishda kelajakdagi qurilmalar uchun yo'llarni eslab qolishni taklif qiladi. Biroq, rivojlanish muhitining o'zi zaxira nusxa yaratmaydi — bu dasturchining mas'uliyati. Jamoa ishlab chiqishi uchun upload key ni xavfsiz kanal orqali barcha jamoa a'zolariga uzatish bilan Google Play App Signing dan foydalanish tavsiya etiladi. Gradle tuzatish (debug) qurilmalarini avtomatik yaratilgan debug.keystore bilan imzolash imkonini beradi, bu esa zaxira nusxani talab qilmaydi — Android Studio ning barcha o'rnatilishlarida bir xil.

Keystore ni uzatishda xavfsizlik: .p12 yoki .jks fayli faqat shifrlangan kanallar (SFTP, HTTPS, shifrlangan email ilovalari) orqali uzatilishi kerak. Keystore ni hech qachon manba kodi repozitoriyasiga qo'shmang — hatto xususiy bo'lsa ham. GitGuardian yoki GitHub secret scanning hisob ma'lumotlarining nashr etilishini avtomatik aniqlaydi, ammo Keystore ni repozitoriyada saqlash hali ham xavfsizlik buzilishidir. CI/CD uchun infratuzilma darajasida shifrlash bilan platforma sir mexanizmidan (GitHub Actions Secrets, GitLab CI Variables, Jenkins Credentials) foydalaning.

Tez-tez so'raladigan savollar

Ilovani nashr etgandan keyin Keystore yo'qolsa nima bo'ladi?

Agar siz Google Play App Signing dan foydalanayotgan bo'lsangiz, faqat upload key yo'qolgan — yangisini yaratib, Google Play Console da ro'yxatdan o'tkazishingiz mumkin. App Signing yoqilmagan bo'lsa, Keystore yo'qolishi ilovani yangilash imkoniyatsizligini anglatadi — ilovani boshqa package name bilan qayta nashr etishga to'g'ri keladi.

Bitta Keystore bir nechta ilovalar uchun ishlatilishi mumkinmi?

Ha, bitta Keystore turli ilovalar uchun turli kalitlarga ega bir nechta alias (yozuv) ni o'z ichiga olishi mumkin. Har bir ilova uchun bitta Keystore ichida alohida alias ishlatish tavsiya etiladi. Google Play turli ilovalar uchun turli kalitlarni qo'llab-quvvatlaydi — bitta Keystore ni bir nechta loyiha uchun ishlatishga hech qanday cheklov yo'q.

Qaysi imzo algoritmi yaxshiroq — RSA yoki ECDSA?

Android ikkala algoritmni ham qo'llab-quvvatlaydi, lekin ECDSA P-256 afzal: kichikroq imzo hajmi va tezroq tekshirish bilan RSA-2048 ga teng xavfsizlikni ta'minlaydi. Biroq, Android 4.4 va undan past versiyalari bilan moslik kerak bo'lsa, RSA ni tanlang — ECDSA faqat Android 4.3+ dan boshlab qo'llab-quvvatlanadi.

Nega Google Play 25 yil va undan ko'p amal qilish muddati bilan sertifikat talab qiladi?

Android ilova o'rnatilayotganda sertifikatning amal qilish muddatini tekshiradi. Agar sertifikat muddati tugagan bo'lsa, o'rnatish bloklanadi — hatto mavjud ilovaning yangilanishi bo'lsa ham. 25 yil Google tomonidan tavsiya etilgan minimal muddat bo'lib, yangi sertifikat chiqarish zaruratisiz mobil ilovaning butun kutilgan hayotiy tsiklini qoplash uchun.

Debug.keystore reliz Keystore dan qanday farq qiladi?

Debug.keystore Android SDK tomonidan avtomatik yaratiladi va tuzatish qurilmalarini imzolash uchun ishlatiladi. Android Studio ning barcha o'rnatilishlarida bir xil (standart parol android). Reliz Keystore dasturchi tomonidan Google Play da nashr etilgan versiyani imzolash uchun yaratiladi va xavfsiz joyda saqlanishi kerak — uning yo'qolishi muhimdir.

Xulosa

  • Keystore — Android ilova imzosi shaxsiy kaliti uchun kriptografik ombor
  • JKS — eskirgan format, PKCS12 — Google tomonidan tavsiya etilgan zamonaviy standart
  • Keytool — buyruq satridan Keystore yaratish va boshqarish uchun JDK vositasi
  • Sertifikatning amal qilish muddati Google Play uchun kamida 25 yil (9125 kun) bo'lishi kerak
  • CI/CD Keystore ni base64 kodlash bilan platforma sirlarida saqlashni talab qiladi
  • Google Play App Signing kalit yo'qolishi xavflarini Google tomonda saqlash bilan kamaytiradi
  • Zaxira nusxasi Keystore uchun majburiy — kalit yo'qolishi ilova yangilanishlarini bloklaydi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing