मैं यह कैसे सत्यापित कर सकता हूं कि एक रिलीज़ प्रमाणपत्र के साथ एक Android APK पर हस्ताक्षर किए गए हैं?


222

मैं यह कैसे जांच सकता हूं कि एंड्रॉइड एपीके एक रिलीज के साथ हस्ताक्षरित है और डिबग सर्टिफिकेट नहीं है?


6
मैंने एक स्क्रिप्ट लिखी है जो एक कीस्टोर के खिलाफ एपीके को मान्य करेगी।
जॉनीलैम्बडा

जवाब मिला अगर आपको अपना पाया।
रिंकल भंडारी

@JohnnyLambada मैं मैक में आपकी स्क्रिप्ट कैसे चला सकता हूं?
हारून अज़हरी

1
@JohnnyLambada मैं आपकी स्क्रिप्ट कैसे चला सकता हूं?
सुनील

@sunil यह एक बैश स्क्रिप्ट है जो एक नया बैश फंक्शन बनाती है। लिंक का पालन करें और फिर एक फ़ाइल में पेस्ट करें source thatfile। स्क्रिप्ट में टिप्पणियां बताती हैं कि इसे कैसे चलाना है।
JohnnyLambada

जवाबों:


372

इस कमांड का उपयोग करें, (जाव <जाडक <बिन रास्ते में cmd ​​प्रॉम्प्ट पर जाएं)

$ jarsigner -verify -verbose -certs my_application.apk

यदि आप "CN = Android डीबग" देखते हैं, तो इसका अर्थ है .apk पर Android SDK द्वारा उत्पन्न डिबग कुंजी के साथ हस्ताक्षर किया गया था (इसका अर्थ है कि यह अहस्ताक्षरित है), अन्यथा आपको CN के लिए कुछ मिलेगा। अधिक जानकारी के लिए देखें: http://developer.android.com/guide/publishing/app-signing.html


1
मुझे 2 डिफरेंट एपीके files.so के लिए कमांड के निष्पादन के अंत में जार सत्यापित के रूप में संदेश मिला। लेकिन जैसा कि यह 1 के लिए CN = "android डिबग" देता है और अन्य एपीके के लिए अलग है।
रनर

3
यह हस्ताक्षर को कैसे सत्यापित करता है? क्या यह सिस्टम के विश्वसनीय सीए का उपयोग करेगा? या यह केवल जार फ़ाइलों की अखंडता की जांच करने के लिए एक उपकरण है? धन्यवाद
मुस्तफा Shahverdy

2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)- इसका मतलब यह नहीं है कि यह अहस्ताक्षरित है। इसका मतलब है कि आपने अभी क्या लिखा है - यह डीबग कुंजी के साथ हस्ताक्षरित है।
दिमित्री ज़ेत्सेव

3
हम कैसे जाँच सकते हैं कि यह उसी सर्टिफिकेट फ़ाइल के साथ हस्ताक्षरित किया गया था, और केवल एक ही नहीं है जो संगठन, स्थान आदि के लिए समान मान रखता है?
ओलिवियरएम

1
धन्यवाद। इसलिए jarsigner -verify -verbose -certs myapp.apk | grep CN= | lessऔर हमें "CN = Android डीबग" नहीं देखना चाहिए।
rpattabi

70

कंसोल कमांड का उपयोग करें:

apksigner verify --print-certs application-development-release.apk

आप में apksigner पा सकते हैं ../sdk/build-tools/24.0.3/apksigner.bat। केवल निर्माण उपकरण v। 24.0.3 और उच्चतर के लिए।

Google डॉक्स भी पढ़ें: https://developer.android.com/studio/command-line/apksigner.html


मुझे apksigner`% LOCALAPPDATA% \ Android \ sdk \ build-tools \ 25.0.3` (और मेरे द्वारा इंस्टॉल किए गए प्रत्येक अन्य निर्माण उपकरण संस्करण) में मिला
जॉन

2
ध्यान दें कि बिल्ड-टूल्स के apksignerसंस्करण में गायब है 26.0.0। यह जारीकर्ता क्रै.च्युइट्स / 62696222 में ट्रैक किया जाता है और अगले संस्करण में तय किया जाना चाहिए। तब तक वर्कअराउंड का उपयोग करना apksignerहै 25.0.3
फ्राइडेरब्लुमेले

2
अपडेट: apksignerसंस्करण में शामिल है26.0.1
forresthopkinsa

अपडेट: APKSigner 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2 में भी है। मेरा मानना ​​है कि आप इसे भविष्य के सभी रिलीज में पाएंगे :)
किरिल वाशिलो

2
वर्बोज़ आउटपुट उपयोग के लिए -v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
तिलो

59

इस कमांड का उपयोग करें: (Jarsigner आपके जावा बिन फोल्डर गोटो java-> jdk-> बिन पाथ इन सीएमडी) में है

$ jarsigner -verify my_signed.apk

अगर .apk पर ठीक से हस्ताक्षर किए गए हैं, तो Jarsigner प्रिंट "जार सत्यापित"


13
यह बहुत अच्छा नहीं है क्योंकि दोनों डिबग और रिलीज़ एप्स पर हस्ताक्षर किए गए हैं "जार सत्यापित" देंगे। @ अनस के उत्तर के विवरण की जाँच करें।
rpattabi

मैंने पूरी तरह से इस कमांड की कोशिश की और इसे सत्यापित किया। फिर एक प्रयोग के रूप में मैं एपीके में गया और सिग फ़ाइलों और प्रकट को छोड़कर शाब्दिक रूप से हर फ़ाइल को हटा दिया, और यह अभी भी सत्यापित है। तो यहाँ कुछ बहुत गलत है। हालाँकि मुझे अभी तक @ अनस के जवाब की कोशिश नहीं करनी है।
orblivion

39

सबसे आसान:

keytool -list -printcert -jarfile file.apk

यह जावा बिल्ट-इन कीटूल ऐप का उपयोग करता है और इसमें निष्कर्षण या किसी भी बिल्ड-टूल इंस्टॉलेशन की आवश्यकता नहीं होती है।


जो कोई भी keytoolतुरंत नहीं चल सकता है , उसके लिए जाँच करें और शायद %JAVA_HOME%\binपथ को जोड़ने का प्रयास करें
TT--

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.