2012-12-03 17 views
11

से कच्चे X.509 प्रमाण पत्र निकालें मेरे पास विभिन्न जारों पर हस्ताक्षर करने के लिए उपयोग की जाने वाली सार्वजनिक कुंजी के एमडी 5 हैंश, और उनके संबंधित कीस्टोरों पर मैपिंग है जिसका उपयोग हम विभिन्न एपीके पर हस्ताक्षर करने के लिए करते हैं। मैं क्या करने में सक्षम होना चाहता हूं यह पहचानना है कि एपीके पर हस्ताक्षर करने के लिए किस कुंजीस्टोर का उपयोग किया गया था, लेकिन परीक्षण और त्रुटि का उपयोग किए बिना। (इसके अलावा, दुख की बात है कि, हमारी कई चाबियाँ समान या समान डीएन साझा करती हैं।)एक हस्ताक्षरित एपीके या जेएआर

मेरा समाधान, क्योंकि मुझे पता है कि मेटा-आईएनएफ/FOO.RSA (या FOO.DSA) में प्रमाण पत्र है, प्रमाणपत्र से निकालना था एपीके की आरएसए फ़ाइल और सीधे एमडी 5 हैश की गणना करें। (मुझे पता है कि प्रमाण पत्र वहां है क्योंकि यह एक चल रहे एंड्रॉइड एप्लिकेशन के लिए सुलभ है, और jarsigner दस्तावेज मुझे बताता है कि यह वहां है।)

लेकिन मुझे कोई ऐसा उपकरण नहीं मिल रहा है जो मुझे प्रमाण पत्र के वास्तविक बाइट्स देता है। जब मैं jarsigner -verbose -verify -certs my.apk का उपयोग करता हूं तो मैं डीएन और प्रमाणपत्र मेटाडेटा प्राप्त कर सकता हूं, लेकिन यह मुझे बाइट्स नहीं देता है।

उत्तर

22

जार निकालें तो प्रमाण पत्र उत्पादन के लिए 'openssl' का उपयोग करें:

तो 'foo.jar' मानते हुए अपने वर्तमान निर्देशिका में है, की तरह कुछ कार्य करें: इतना

mkdir temp 
cd temp 
jar -xvf ../foo.jar 
cd META-INF 
openssl pkcs7 -in FOO.RSA -print_certs -inform DER -out foo.cer 
1

हेक्सडम्प FOO.RSA। अंतिम एन बाइट्स हस्ताक्षर स्वयं हैं, जहां एन कुंजी लंबाई (उदा।, 1024 बिट आरएसए) पर निर्भर करता है। यदि आप एक ही कुंजी के साथ दो बार हस्ताक्षर करते हैं, तो आप आरएसए फाइलों को अलग कर सकते हैं और देख सकते हैं कि केवल अंतिम एन बाइट बदलते हैं; फ़ाइल का स्थैतिक हिस्सा प्रमाण है और बिट्स जो बदलते हैं FOO.sf के हैश पर हस्ताक्षर हैं। प्रमाण और हस्ताक्षर के बीच एक डिलीमीटर हो सकता है जिसे आपको भी हटाना होगा।

+1

धन्यवाद! मुझे बस एक स्क्रिप्ट काम कर रहा है। उन लोगों के लिए जो उत्सुक हैं, आरएसए फ़ाइल में निम्न पैटर्न है: * अज्ञात जानकारी के 54 बाइट * आने वाले प्रमाणपत्र की लंबाई के साथ 2 बाइट शॉर्ट (बड़ा-एंडियन) * एन बाइट्स सर्टिफिकेट * अज्ञात –

संबंधित मुद्दे