Keystore एक सुरक्षित क्रिप्टोग्राफ़िक स्टोरेज है जिसका उपयोग Android डेवलपमेंट में निजी कुंजियों और ऐप हस्ताक्षर प्रमाणपत्रों को संग्रहीत करने के लिए किया जाता है। Android Developers Documentation, 2026 के अनुसार, Google Play पर प्रकाशित करने से पहले प्रत्येक APK या App Bundle पर Keystore से डिजिटल हस्ताक्षर होना चाहिए। आइए Keystore प्रारूपों, निर्माण और प्रोजेक्ट में उपयोग को समझें।
मुख्य बिंदु
Keystore (KeyStore) क्रिप्टोग्राफ़िक कुंजियों, प्रमाणपत्रों और विश्वसनीय प्रविष्टियों को संग्रहीत करने के लिए Java Cryptography Architecture (JCA) का एक मानक तंत्र है। Android डेवलपमेंट में, Keystore का उपयोग निजी कुंजी को संग्रहीत करने के लिए किया जाता है जो प्रकाशन से पहले ऐप पर हस्ताक्षर करती है। हस्ताक्षर गारंटी देता है कि ऐप वास्तव में निर्दिष्ट डेवलपर द्वारा जारी किया गया था और प्रकाशन के बाद इसका कोड नहीं बदला गया है। प्रत्येक ऐप अपडेट पर उसी कुंजी से हस्ताक्षर होना चाहिए, अन्यथा Google Play APK या App Bundle को अस्वीकार कर देगा।
एक Keystore में कई प्रविष्टियाँ (aliases) हो सकती हैं, जिनमें से प्रत्येक एक प्रमाणपत्र के साथ एक कुंजी जोड़ी (निजी और सार्वजनिक) का प्रतिनिधित्व करती है। Alias एक अद्वितीय प्रविष्टि नाम है जिसके द्वारा ऐप हस्ताक्षर के दौरान कुंजी तक पहुँचता है। एक सामान्य Android प्रोजेक्ट में, Keystore में रिलीज़ संस्करण पर हस्ताक्षर करने के लिए एक प्रविष्टि होती है और डीबग बिल्ड पर हस्ताक्षर करने के लिए अतिरिक्त प्रविष्टियाँ हो सकती हैं। Google Play Console प्रत्येक अपलोड किए गए ऐप के लिए SHA-1 और SHA-256 प्रमाणपत्र फ़िंगरप्रिंट प्रदर्शित करता है।
Android Studio में Build → Generate Signed Bundle / APK मेनू के माध्यम से अंतर्निहित Keystore समर्थन शामिल है। Android Studio का हस्ताक्षर विज़ार्ड आपको एक नया Keystore बनाने या मौजूदा का चयन करने, alias, Keystore और कुंजी पासवर्ड, साथ ही प्रमाणन डेटा (संगठन का नाम, शहर, देश) निर्दिष्ट करने की अनुमति देता है। यह डेटा प्रमाणपत्र में एम्बेड किया जाता है और APK हस्ताक्षर सत्यापित करते समय उपयोगकर्ताओं को दिखाई देता है। Google Play आवश्यकता है कि प्रमाणपत्र कम से कम 25 वर्षों के लिए वैध हो — Android ऐप इंस्टॉल करते समय समाप्ति तिथि की जाँच करता है।
Google Play में ऐप अपडेट केवल उसी कुंजी से संभव है जिसने पहले संस्करण पर हस्ताक्षर किया था। यदि Keystore खो जाता है, तो अपडेट प्रकाशित करना असंभव है — ऐप को एक नए पैकेज नाम के तहत फिर से जारी करना होगा। Google Play Console Help (2026) के अनुसार, ऐप हस्ताक्षर कुंजी को केवल Google Play App Signing के माध्यम से पुनर्प्राप्त किया जा सकता है — एक सेवा जो कुंजी को Google के पक्ष में संग्रहीत करती है। यदि डेवलपर ने इस विकल्प का उपयोग किया, तो स्थानीय Keystore खोना महत्वपूर्ण नहीं है।
Android ऐप पर हस्ताक्षर करने की प्रक्रिया में APK सामग्री का डाइजेस्ट (हैश) बनाना और इसे Keystore से निजी कुंजी के साथ एन्क्रिप्ट करना शामिल है। Android SDK Build Tools में apksigner उपयोगिता शामिल है, जो APK Signature Scheme v2 (या Android 9+ के लिए v3) प्रारूप में हस्ताक्षर करती है। ऐप इंस्टॉल करते समय, Android हस्ताक्षर सत्यापित करता है: प्रमाणपत्र की सार्वजनिक कुंजी से हस्ताक्षर को डिक्रिप्ट करता है, APK हैश की मूल से तुलना करता है — यदि हैश मेल नहीं खाते, तो इंस्टॉलेशन अस्वीकार कर दिया जाता है।
Android कई हस्ताक्षर योजनाओं का समर्थन करता है: v1 (JAR signing), v2 (APK Signature Scheme), v3 (APK Signature Scheme कुंजी रोटेशन समर्थन के साथ) और v4 (Android 11+ के लिए वृद्धिशील इंस्टॉलेशन)। Google Play नए ऐप्स के लिए v2 या v3 आवश्यक करता है। apksigner हस्ताक्षर के दौरान स्वचालित रूप से सभी आवश्यक योजनाएँ जोड़ता है यदि कुंजी संबंधित एल्गोरिदम का समर्थन करती है। Android 11+ v4 हस्ताक्षर के साथ ADB इंस्टॉलेशन का समर्थन करता है, जो डिवाइस पर बड़े APK की वृद्धिशील लोडिंग को गति देता है।
एल्गोरिदम: Android हस्ताक्षर कुंजी के लिए RSA-2048 या ECDSA P-256 का उपयोग करने की अनुशंसा करता है। प्रमाणपत्र X.509 v3 होना चाहिए। Android सत्यापित करता है कि इंस्टॉलेशन के समय प्रमाणपत्र वैध है — यदि इसकी समय सीमा समाप्त हो गई है, तो इंस्टॉलेशन अवरुद्ध हो जाता है। यही कारण है कि Google प्रमाणपत्र की वैधता अवधि कम से कम 25 वर्ष निर्धारित करने की अनुशंसा करता है। Google Play App Signing दो कुंजियों का उपयोग करता है: ऐप हस्ताक्षर कुंजी (app signing key) और अपलोड कुंजी (upload key) — डेवलपर द्वारा APK को Console में अपलोड करने के लिए अपलोड कुंजी का उपयोग किया जाता है, और Google उपयोगकर्ताओं के लिए मुख्य कुंजी से ऐप पर हस्ताक्षर करता है।
Java दो मुख्य Keystore प्रारूपों का समर्थन करता है: JKS (Java KeyStore) — Oracle का स्वामित्व प्रारूप जो JDK 1.2 से मौजूद है, और PKCS12 — RSA Laboratories से मानकीकृत Public-Key Cryptography Standards #12 प्रारूप। JKS अपने स्वयं के डेटा भंडारण प्रारूप का उपयोग करता है और केवल Java इकोसिस्टम के भीतर समर्थित है। PKCS12 एक खुला मानक है जो Java, .NET, OpenSSL, Python (cryptography) और अधिकांश अन्य क्रिप्टोग्राफ़िक लाइब्रेरीज़ द्वारा समर्थित है।
Google Play 2021 के बाद बनाए गए नए Keystores के लिए PKCS12 को पसंदीदा प्रारूप के रूप में अनुशंसा करता है। JDK 9 और बाद के संस्करण डिफ़ॉल्ट रूप से PKCS12 प्रारूप में Keystores बनाते हैं (पहले JKS डिफ़ॉल्ट था)। PKCS12 का मुख्य लाभ संगतता है: .p12 फ़ाइल को Java से बंधे नहीं किसी भी वातावरण में खोला जा सकता है। OpenSSL PKCS12 से प्रमाणपत्र निकाल सकता है और उन्हें PEM प्रारूप में बदल सकता है। JKS फ़ाइलों को पढ़ने के लिए JDK उपयोगिताओं की आवश्यकता होती है और OpenSSL द्वारा संसाधित नहीं किया जा सकता।
प्रारूपों के बीच रूपांतरण JDK से keytool उपयोगिता का उपयोग करके किया जाता है। JKS से PKCS12 में माइग्रेट करते समय, सुनिश्चित करें कि सभी aliases और पासवर्ड सही ढंग से स्थानांतरित किए गए हैं। keytool -importkeystore कमांड प्रारूप की परवाह किए बिना एक Keystore की सामग्री को दूसरे में आयात करने की अनुमति देता है। रूपांतरण के बाद, कुंजी संस्करणों के साथ भ्रम से बचने के लिए पुरानी JKS फ़ाइल को हटा देना सबसे अच्छा है। Android Studio हस्ताक्षरित बिल्ड जनरेट करते समय दोनों प्रारूपों का समर्थन करता है।
| विशेषता | JKS | PKCS12 |
|---|---|---|
| मानक | स्वामित्व (Oracle) | खुला (RSA Labs) |
| एक्सटेंशन | .jks / .keystore | .p12 / .pfx |
| समर्थन | केवल Java | Java, OpenSSL, .NET, Python |
| डिफ़ॉल्ट | JDK 8 तक | JDK 9+ |
| Google अनुशंसा | पुराना | पसंदीदा |
keytool उपयोगिता JDK (Java Development Kit) का हिस्सा है और Keystores बनाने, देखने और प्रबंधित करने के लिए कमांड का एक पूरा सेट प्रदान करती है। एक कुंजी जोड़ी के साथ एक नया Keystore बनाने के लिए, PKCS12 प्रारूप, RSA एल्गोरिदम, कुंजी आकार और प्रमाणपत्र वैधता अवधि निर्दिष्ट करते हुए keytool -genkeypair कमांड का उपयोग किया जाता है। Google Play को कम से कम 25 वर्षों (9125 दिन) की प्रमाणपत्र वैधता की आवश्यकता है — -validity पैरामीटर में इस मान को निर्दिष्ट करने की अनुशंसा की जाती है।
Android प्रोजेक्ट के लिए PKCS12 प्रारूप में Keystore जनरेट करने का उदाहरण। -dname पैरामीटर में प्रमाणपत्र का X.500 Distinguished Name होता है। -ext पैरामीटर यदि आवश्यक हो तो Subject Alternative Name शामिल करता है — Android के लिए, Basic Constraints पर्याप्त हैं:
# Android के लिए PKCS12 Keystore बनाना
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 पासवर्ड और कुंजी पासवर्ड (वे मेल खा सकते हैं) के लिए संकेत देगा। -storetype PKCS12 पैरामीटर आधुनिक प्रारूप में एक फ़ाइल बनाता है। -keysize 2048 न्यूनतम RSA कुंजी आकार के लिए Google की आवश्यकताओं को पूरा करता है। -validity 9125 (25 वर्ष) एप्लिकेशन के संपूर्ण अपेक्षित जीवनचक्र के लिए संगतता सुनिश्चित करता है। Keystore बनाने के बाद, keytool -list -v -keystore release-keystore.p12 कमांड से इसकी सामग्री सत्यापित करने की अनुशंसा की जाती है।
Keystore प्रविष्टियों की जाँच करने के लिए, -list फ़्लैग वाले कमांड का उपयोग किया जाता है। आउटपुट में alias, निर्माण और समाप्ति तिथियाँ, प्रविष्टि प्रकार और SHA-256 फ़िंगरप्रिंट शामिल होते हैं। Android Studio मौजूदा Keystore चुनते समय Generate Signed Bundle / APK डायलॉग में वही जानकारी प्रदर्शित करता है:
# Keystore प्रविष्टियाँ देखना
keytool -list -v -keystore "release-keystore.p12" \
-storetype PKCS12
CI/CD पाइपलाइन में, Keystore को सुरक्षित रूप से संग्रहीत किया जाना चाहिए और समझौता करने के जोखिम के बिना बिल्ड एजेंट को पास किया जाना चाहिए। GitHub Actions बाइनरी फ़ाइलों को base64 प्रारूप में संग्रहीत करने के लिए Secrets प्रदान करता है। Keystore को base64 कमांड से एन्कोड किया जाता है, परिणामी स्ट्रिंग को रिपॉजिटरी सीक्रेट्स में सहेजा जाता है, और बिल्ड चरण के दौरान इसे वापस फ़ाइल में डिकोड किया जाता है। GitLab CI File प्रकार के Variables के माध्यम से समान तंत्र का उपयोग करता है।
GitHub Actions में Keystore के साथ CI बिल्ड सेट करने के उदाहरण में सीक्रेट से Keystore को डिकोड करना, Gradle गुणों को कॉन्फ़िगर करना और हस्ताक्षरित बिल्ड निष्पादित करना शामिल है। Gradle का Android प्लगइन keystore.properties फ़ाइल (स्थानीय विकास के लिए .gitignore से बाहर) या CI सिस्टम पर्यावरण चर से Keystore पथ और पासवर्ड पढ़ता है:
// build.gradle (app) — हस्ताक्षर कॉन्फ़िगरेशन
@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 सिस्टम द्वारा निर्धारित पर्यावरण चर पढ़ता है। Keystore फ़ाइल एप्लिकेशन मॉड्यूल के रूट में स्थित होनी चाहिए, जैसा कि storeFile में निर्दिष्ट है। सुरक्षा के लिए, रिपॉजिटरी में कभी भी पासवर्ड स्टोर न करें — CI सिस्टम Secrets का उपयोग करें। Android के लिए Fastlane supply प्लगइन प्रदान करता है, जो Google Play Console के साथ काम करता है, लेकिन APK हस्ताक्षर के लिए अभी भी एजेंट पर स्थानीय Keystore की आवश्यकता होती है।
एक विकल्प Google Play App Signing है। इस विकल्प का उपयोग करते समय, डेवलपर केवल अपलोड कुंजी (upload key) Google Play पर अपलोड करता है, और Google अपनी कुंजी से अंतिम APK पर हस्ताक्षर करता है। इस मामले में, Keystore का उपयोग केवल अपलोड कुंजी बनाने के लिए किया जाता है, और इसका खो जाना अपडेट को अवरुद्ध नहीं करता है — एक नई अपलोड कुंजी बनाई जा सकती है और Console में पंजीकृत की जा सकती है। Google Play App Signing अगस्त 2021 से नए एप्लिकेशन के लिए अनिवार्य है।
Keystore खोना Android डेवलपमेंट में सबसे महत्वपूर्ण समस्याओं में से एक है। बैकअप के बिना, मौजूदा एप्लिकेशन का अपडेट जारी करना असंभव है — Google Play अलग कुंजी से हस्ताक्षरित APK को अस्वीकार करता है। Keystore की कम से कम दो बैकअप प्रतियां विभिन्न भौतिक या क्लाउड स्टोरेज में रखने की अनुशंसा की जाती है: उदाहरण के लिए, टीम के क्लाउड स्टोरेज में एक एन्क्रिप्टेड फ़ाइल और संगठन की तिजोरी में एक भौतिक मीडिया। Keystore और कुंजी पासवर्ड फ़ाइल से अलग संग्रहीत किए जाते हैं, उदाहरण के लिए, एक्सेस नियंत्रण वाले पासवर्ड मैनेजर में।
Android Studio, Generate Signed Bundle / APK डायलॉग में नया Keystore बनाते समय, भविष्य के बिल्ड के लिए पथ याद रखने की पेशकश करता है। हालाँकि, डेवलपमेंट एनवायरनमेंट स्वयं बैकअप नहीं बनाता है — यह डेवलपर की जिम्मेदारी है। टीम डेवलपमेंट के लिए, सभी टीम सदस्यों को एक सुरक्षित चैनल के माध्यम से अपलोड कुंजी पास करने के साथ Google Play App Signing का उपयोग करने की अनुशंसा की जाती है। Gradle स्वचालित रूप से उत्पन्न debug.keystore के साथ डीबग बिल्ड पर हस्ताक्षर कर सकता है, जिसके लिए बैकअप की आवश्यकता नहीं होती है — यह सभी Android Studio इंस्टॉलेशन के लिए समान है।
स्थानांतरण के दौरान Keystore सुरक्षा: .p12 या .jks फ़ाइलों को केवल एन्क्रिप्टेड चैनलों (SFTP, HTTPS, एन्क्रिप्टेड ईमेल अटैचमेंट) के माध्यम से स्थानांतरित किया जाना चाहिए। Keystore को स्रोत कोड रिपॉजिटरी में कभी शामिल न करें — निजी में भी नहीं। GitGuardian या GitHub secret scanning स्वचालित रूप से क्रेडेंशियल प्रकाशन का पता लगाते हैं, लेकिन रिपॉजिटरी में Keystore संग्रहीत करना अभी भी सुरक्षा उल्लंघन है। CI/CD के लिए, बुनियादी ढाँचा-स्तरीय एन्क्रिप्शन के साथ प्लेटफ़ॉर्म के सीक्रेट तंत्र (GitHub Actions Secrets, GitLab CI Variables, Jenkins Credentials) का उपयोग करें।
अक्सर पूछे जाने वाले प्रश्न
यदि आप Google Play App Signing का उपयोग कर रहे हैं, तो केवल अपलोड कुंजी खोती है — आप एक नई कुंजी बना सकते हैं और इसे Google Play Console में पंजीकृत कर सकते हैं। यदि App Signing सक्षम नहीं है, तो Keystore खोने का मतलब है कि आप एप्लिकेशन को अपडेट नहीं कर सकते — आपको एक अलग पैकेज नाम के साथ एक नया एप्लिकेशन प्रकाशित करना होगा।
हाँ, एक Keystore में विभिन्न एप्लिकेशन के लिए अलग-अलग कुंजियों के साथ कई aliases (प्रविष्टियाँ) हो सकती हैं। एक Keystore के भीतर प्रत्येक एप्लिकेशन के लिए एक अलग alias का उपयोग करने की अनुशंसा की जाती है। Google Play विभिन्न एप्लिकेशन के लिए अलग-अलग कुंजियों का समर्थन करता है — एक Keystore को कई प्रोजेक्ट के लिए उपयोग करने पर कोई प्रतिबंध नहीं है।
Android दोनों एल्गोरिदम का समर्थन करता है, लेकिन ECDSA P-256 बेहतर है: यह छोटे हस्ताक्षर आकार और तेज़ सत्यापन के साथ RSA-2048 के बराबर सुरक्षा प्रदान करता है। हालाँकि, यदि Android 4.4 और उससे नीचे के साथ संगतता आवश्यक है, तो RSA चुनें — ECDSA केवल Android 4.3+ पर समर्थित है।
Android एप्लिकेशन इंस्टॉल करते समय प्रमाणपत्र की वैधता अवधि की जाँच करता है। यदि प्रमाणपत्र की समय सीमा समाप्त हो गई है, तो इंस्टॉलेशन अवरुद्ध हो जाता है — भले ही वह मौजूदा एप्लिकेशन का अपडेट हो। 25 वर्ष Google द्वारा अनुशंसित न्यूनतम अवधि है ताकि मोबाइल एप्लिकेशन के संपूर्ण अपेक्षित जीवनचक्र को नया प्रमाणपत्र जारी किए बिना कवर किया जा सके।
Debug.keystore Android SDK द्वारा स्वचालित रूप से बनाया जाता है और डीबग बिल्ड पर हस्ताक्षर करने के लिए उपयोग किया जाता है। यह सभी Android Studio इंस्टॉलेशन के लिए समान है (मानक पासवर्ड: android)। रिलीज़ Keystore Google Play पर प्रकाशित संस्करण पर हस्ताक्षर करने के लिए डेवलपर द्वारा बनाया जाता है और इसे सुरक्षित रखा जाना चाहिए — इसे खोना गंभीर है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें