Keystore Android inkişafında tətbiq imzasının şəxsi açarlarını və sertifikatlarını saxlamaq üçün istifadə olunan qorunan kriptoqrafik bir anbardır. Android Developers Documentation, 2026-ya görə, Google Play-də yayımlanmazdan əvvəl hər APK və ya App Bundle Keystore-dən rəqəmsal imza ilə imzalanmalıdır. Gəlin Keystore formatlarını, yaradılmasını və layihədə istifadəsini nəzərdən keçirək.
Əsas Məqamlar
Keystore (KeyStore) — kriptoqrafik açarları, sertifikatları və etibarlı qeydləri saxlamaq üçün Java Cryptography Architecture (JCA) standart mexanizmidir. Android inkişafında Keystore tətbiqin yayımlanmazdan əvvəl imzalandığı şəxsi açarı saxlamaq üçün istifadə olunur. Imza, tətbiqin həqiqətən göstərilən tərtibatçı tərəfindən buraxıldığını və kodunun yayımlandıqdan sonra dəyişdirilmədiyini təmin edir. Hər tətbiq yeniləməsi eyni açarla imzalanmalıdır, əks halda Google Play APK və ya App Bundle-ı rədd edəcək.
Keystore bir neçə qeyd (alias) ehtiva edə bilər, hər biri sertifikatla birlikdə bir cüt açar (şəxsi və açıq) təmsil edir. Alias — tətbiqin imzalama zamanı açara müraciət etdiyi unikal qeyd adıdır. Tipik bir Android layihəsində Keystore buraxılış versiyasını imzalamaq üçün bir qeyd ehtiva edir və sazlama (debug) qurğularını imzalamaq üçün əlavələr ola bilər. Google Play Console yüklənmiş hər tətbiq üçün sertifikatın SHA-1 və SHA-256 barmaq izlərini göstərir.
Android Studio Build → Generate Signed Bundle / APK menyusu vasitəsilə Keystore üçün daxili dəstəyi ehtiva edir. Imzalama ustası Android Studio yeni Keystore yaratmağa və ya mövcud olanı seçməyə, alias, Keystore və açar şifrələrini, həmçinin sertifikat məlumatlarını (təşkilat adı, şəhər, ölkə) göstərməyə imkan verir. Bu məlumatlar sertifikata daxil edilir və istifadəçilərə APK imzasını yoxlayarkən görünür. Google Play sertifikatın etibarlılıq müddətinin ən azı 25 il olmasını tələb edir — Android tətbiq qurularkən bitmə tarixini yoxlayır.
Tətbiq yeniləməsi Google Play-də yalnız ilk versiyanın imzalandığı eyni açarla mümkündür. Keystore itirilərsə, yeniləmə dərc etmək mümkün deyil — tətbiq yeni paket adı (package name) altında yenidən buraxılmalı olacaq. Google Play Console Help (2026)-ya görə, tətbiq imza açarı yalnız Google Play App Signing vasitəsilə bərpa edilə bilər — bu xidmət açarı Google tərəfində saxlayır. Əgər tərtibatçı bu seçimi istifadə edibsə, yerli Keystore itkisi kritik deyil.
Android tətbiqinin imzalanması prosesi APK məzmununun xəltəsini (hash) yaratmaq və onu Keystore-dən şəxsi açarla şifrələməkdən ibarətdir. Android SDK Build Tools APK Signature Scheme v2 (və ya Android 9+ üçün v3) formatında imza yerinə yetirən apksigner vasitəsini ehtiva edir. Tətbiq qurularkən Android imzanı yoxlayır: imzanı sertifikatın açıq açarı ilə deşifrələyir, APK xəltəsini orijinal ilə müqayisə edir — xəltələr uyğun gəlmirsə, qurulum rədd edilir.
Android bir neçə imza sxemini dəstəkləyir: v1 (JAR signing), v2 (APK Signature Scheme), v3 (APK Signature Scheme açar rotasiyası dəstəyi ilə) və v4 (Android 11+ artımlı qurulumları). Google Play yeni tətbiqlər üçün v2 və ya v3 tələb edir. Açar müvafiq alqoritmləri dəstəkləyirsə, apksigner imzalama zamanı avtomatik olaraq bütün lazımi sxemləri əlavə edir. Android 11+ v4 imzası ilə ADB qurulumunu dəstəkləyir, bu da böyük APK fayllarının cihaza artımlı yüklənməsini sürətləndirir.
Alqoritmlər: Android imza açarı üçün RSA-2048 və ya ECDSA P-256 istifadəsini tövsiyə edir. Sertifikat X.509 v3 olmalıdır. Android qurulum anında sertifikatın etibarlı olub-olmadığını yoxlayır — müddəti bitibsə, qurulum bloklanır. Məhz buna görə Google sertifikatın etibarlılıq müddətini ən azı 25 il təyin etməyi tövsiyə edir. Google Play App Signing iki açardan istifadə edir: tətbiq imza açarı (app signing key) və yükləmə açarı (upload key) — yükləmə açarı tərtibatçı tərəfindən APK-nı Console-a yükləmək üçün istifadə olunur, Google isə tətbiqi istifadəçilər üçün əsas açarla imzalayır.
Java iki əsas Keystore formatını dəstəkləyir: JKS (Java KeyStore) — JDK 1.2-dən mövcud olan Oracle mülkiyyət formatı, və PKCS12 — RSA Laboratories tərəfindən Public-Key Cryptography Standards #12 standartlaşdırılmış formatı. JKS öz məlumat saxlama formatından istifadə edir və yalnız Java ekosistemində dəstəklənir. PKCS12 Java, .NET, OpenSSL, Python (cryptography) və digər kriptoqrafik kitabxanaların əksəriyyəti tərəfindən dəstəklənən açıq standartdır.
Google Play 2021-ci ildən sonra yaradılan yeni Keystore-lər üçün PKCS12-ni üstünlük verilən format kimi tövsiyə edir. JDK 9 və daha yeniləri susmaya görə PKCS12 formatında Keystore yaradır (əvvəllər susmaya görə JKS idi). PKCS12-nin əsas üstünlüyü uyğunluqdur: .p12 faylı Java-ya bağlı olmayan istənilən mühitdə açıla bilər. OpenSSL PKCS12-dən sertifikatları çıxara və onları PEM formatına çevirə bilər. JKS faylları oxumaq üçün JDK vasitələri tələb edir və OpenSSL tərəfindən işlənə bilməz.
Formatlar arasında çevirmə JDK-dan keytool vasitəsi ilə həyata keçirilir. JKS-dən PKCS12-yə miqrasiya zamanı bütün aliasların və şifrələrin düzgün köçürüldüyünə əmin olmaq lazımdır. keytool -importkeystore əmri formatdan asılı olmayaraq bir Keystore-un məzmununu digərinə idxal etməyə imkan verir. Çevirmədən sonra açar versiyaları ilə qarışıqlığın qarşısını almaq üçün köhnə JKS faylını silmək daha yaxşıdır. Android Studio imzalanmış qurğu yaradarkən hər iki formatı dəstəkləyir.
| Xarakteristika | JKS | PKCS12 |
|---|---|---|
| Standart | Mülkiyyət (Oracle) | Açıq (RSA Labs) |
| Uzantı | .jks / .keystore | .p12 / .pfx |
| Dəstək | Yalnız Java | Java, OpenSSL, .NET, Python |
| Susmaya görə | JDK 8-dək | JDK 9+ |
| Google tövsiyəsi | Köhnəlmiş | Üstünlük verilən |
keytool vasitəsi JDK (Java Development Kit) tərkibinə daxildir və Keystore yaratmaq, baxmaq və idarə etmək üçün tam əmrlər dəstini təmin edir. Bir cüt açarla yeni Keystore yaratmaq üçün PKCS12 formatı, RSA alqoritmi, açar ölçüsü və sertifikatın etibarlılıq müddəti göstərilməklə keytool -genkeypair əmri istifadə olunur. Google Play sertifikatın etibarlılıq müddətinin ən azı 25 il (9125 gün) olmasını tələb edir — bu dəyərin -validity parametrində göstərilməsi tövsiyə olunur.
Android layihəsi üçün PKCS12 formatında Keystore generasiyası nümunəsi. -dname parametri sertifikatın X.500 Distinguished Name-ni ehtiva edir. -ext parametri tələb olunarsa Subject Alternative Name-i daxil edəcək — Android üçün Basic Constraints kifayətdir:
# Android üçün PKCS12 Keystore yaradılması
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 şifrəsini və açar şifrəsini soruşacaq (eyni ola bilər). -storetype PKCS12 parametri faylı müasir formatda yaradır. -keysize 2048 Google-ın minimum RSA açar ölçüsü tələblərinə uyğundur. -validity 9125 (25 il) tətbiqin gözlənilən bütün həyat dövrü üçün uyğunluğu təmin edir. Keystore yaradıldıqdan sonra onun məzmununu keytool -list -v -keystore release-keystore.p12 əmri ilə yoxlamaq tövsiyə olunur.
Keystore qeydlərini yoxlamaq üçün -list bayrağı ilə əmr istifadə olunur. Nəticə alias, yaradılma və bitmə tarixləri, qeyd növü və SHA-256 barmaq izlərini ehtiva edir. Android Studio eyni məlumatı mövcud Keystore seçərkən Generate Signed Bundle / APK dialoqunda göstərir:
# Keystore qeydlərinə baxılması
keytool -list -v -keystore "release-keystore.p12" \
-storetype PKCS12
CI/CD boru xəttində Keystore qorunan şəkildə saxlanmalı və təhlükəsizlik riski olmadan qurğu agentinə ötürülməlidir. GitHub Actions binar faylları base64 formatında saxlamaq üçün Secrets təmin edir. Keystore base64 əmri ilə kodlanır, alınan sətir repozitoriyanın sirlərində saxlanılır və qurğu mərhələsində yenidən fayla dekodlanır. GitLab CI File tipli Variables vasitəsilə oxşar mexanizmdən istifadə edir.
GitHub Actions-da Keystore ilə CI qurğusunun konfiqurasiya nümunəsi sirrdən Keystore dekodlanmasını, Gradle xüsusiyyətlərinin konfiqurasiyasını və imzalanmış qurğunun icrasını əhatə edir. Gradle Android plugin-i Keystore yolunu və şifrələri keystore.properties faylından (yerli inkişaf üçün .gitignore-a daxil edilmiş) və ya CI sisteminin mühit dəyişənlərindən oxuyur:
// build.gradle (app) — imza konfiqurasiyası
@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 sistemi tərəfindən təyin edilmiş mühit dəyişənlərini oxuyur. Keystore faylı storeFile-da göstərildiyi kimi tətbiq modulunun kök qovluğunda yerləşməlidir. Təhlükəsizlik üçün şifrələri heç vaxt repozitoriyada saxlamayın — CI sisteminin Secrets-indən istifadə edin. Fastlane Android üçün Google Play Console ilə işləyən supply pluginini təmin edir, lakin APK imzası hər halda agentdə yerli Keystore tələb edir.
Alternativ Google Play App Signing-dir. Bu seçimdən istifadə edərkən tərtibatçı Google Play-ə yalnız yükləmə açarını (upload key) yükləyir, Google isə son APK-nı öz açarı ilə imzalayır. Bu halda Keystore yalnız yükləmə açarını yaratmaq üçün istifadə olunur və onun itirilməsi yeniləmələri bloklamır — yeni upload key yaradıla və Console-da qeydiyyatdan keçirilə bilər. Google Play App Signing 2021-ci ilin avqustundan etibarən yeni tətbiqlər üçün məcburidir.
Keystore itkisi Android inkişafında ən kritik problemlərdən biridir. Ehtiyat nüsxəsi olmadan Keystore mövcud tətbiqin yeniləməsini buraxmaq mümkün deyil — Google Play fərqli açarla imzalanmış APK-nı rədd edir. Keystore-un ən azı iki ehtiyat nüsxəsini müxtəlif fiziki və ya bulud anbarlarında saxlamaq tövsiyə olunur: məsələn, komandanın bulud anbarında şifrələnmiş fayl və təşkilatın seyfində fiziki daşıyıcı. Keystore və açar şifrələri fayldan ayrı, məsələn, giriş nəzarəti olan parol menecerində saxlanılır.
Android Studio Generate Signed Bundle / APK dialoqunda yeni Keystore yaradarkən gələcək qurğular üçün yolları yadda saxlamağı təklif edir. Lakin inkişaf mühitinin özü ehtiyat nüsxə yaratmır — bu tərtibatçının məsuliyyətidir. Komanda inkişafı üçün upload key-in təhlükəsiz kanal vasitəsilə bütün komanda üzvlərinə ötürülməsi ilə Google Play App Signing istifadə etmək tövsiyə olunur. Gradle sazlama (debug) qurğularını avtomatik yaradılmış debug.keystore ilə imzalamağa imkan verir ki, bu da ehtiyat nüsxə tələb etmir — Android Studio-nun bütün qurulumlarında eynidir.
Keystore-un ötürülməsi zamanı təhlükəsizlik: .p12 və ya .jks faylı yalnız şifrələnmiş kanallar (SFTP, HTTPS, şifrələnmiş email əlavələri) vasitəsilə ötürülməlidir. Keystore-u heç vaxt mənbə kodu repozitoriyasına daxil etməyin — hətta özəl olsa belə. GitGuardian və ya GitHub secret scanning etimadnamələrin dərcini avtomatik aşkarlayır, lakin Keystore-un repozitoriyada saxlanması hələ də təhlükəsizlik pozuntusudur. CI/CD üçün infrastruktur səviyyəsində şifrələmə ilə platforma sirr mexanizmindən (GitHub Actions Secrets, GitLab CI Variables, Jenkins Credentials) istifadə edin.
Tez-tez verilən suallar
Əgər Google Play App Signing istifadə edirsinizsə, yalnız upload key itirilib — yenisini yaradıb Google Play Console-da qeydiyyatdan keçirə bilərsiniz. App Signing aktiv deyilsə, Keystore itkisi tətbiqin yenilənməsini qeyri-mümkün edir — tətbiqi başqa package name ilə yenidən dərc etməli olacaqsınız.
Bəli, bir Keystore müxtəlif tətbiqlər üçün fərqli açarları olan bir neçə alias (qeyd) ehtiva edə bilər. Hər tətbiq üçün bir Keystore daxilində ayrıca alias istifadə etmək tövsiyə olunur. Google Play müxtəlif tətbiqlər üçün fərqli açarları dəstəkləyir — bir Keystore-un bir neçə layihə üçün istifadəsinə heç bir məhdudiyyət yoxdur.
Android hər iki alqoritmi dəstəkləyir, lakin ECDSA P-256 üstünlük veriləndir: daha kiçik imza ölçüsü və daha sürətli yoxlama ilə RSA-2048-ə ekvivalent təhlükəsizlik təmin edir. Bununla belə, Android 4.4 və aşağısı ilə uyğunluq tələb olunarsa, RSA seçin — ECDSA yalnız Android 4.3+-dan dəstəklənir.
Android tətbiq qurularkən sertifikatın etibarlılıq müddətini yoxlayır. Sertifikatın müddəti bitibsə, qurulum bloklanır — hətta mövcud tətbiqin yeniləməsi olsa belə. 25 il Google tərəfindən tövsiyə olunan minimum müddətdir ki, yeni sertifikat buraxmaq zərurəti olmadan mobil tətbiqin bütün gözlənilən həyat dövrünü əhatə etsin.
Debug.keystore Android SDK tərəfindən avtomatik yaradılır və sazlama qurğularını imzalamaq üçün istifadə olunur. Android Studio-nun bütün qurulumlarında eynidir (standart şifrə android). Buraxılış Keystore-u tərtibatçı tərəfindən Google Play-də dərc olunan versiyanı imzalamaq üçün yaradılır və təhlükəsiz yerdə saxlanmalıdır — onun itirilməsi kritikdir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun