কী কী স্টোরটি কোনও অ্যাপ্লিকেশনটিতে সাইন ইন করতে ব্যবহৃত হয়েছিল তা আমি কীভাবে জানতে পারি?


260

আমার স্বাক্ষরিত একটি অ্যাপ রয়েছে এবং বেশ কয়েকটি কীস্টোর ফাইল রয়েছে। আমি অ্যাপটি আপডেট করতে চাই, তাই কোনটি কী ব্যবহার করা হয়েছিল তা আমার খুঁজে বের করা উচিত।

আমার মেশিনে থাকা বিভিন্ন কীস্টোরগুলির বিপরীতে আমার অ্যাপটিতে মূলত আমার অ্যাপ্লিকেশনটিতে সাইন ইন করতে কোন কীস্টোরটি ব্যবহার করা হয়েছিল তা কীভাবে আমি মেলাতে পারি?


আপনি এটি খুঁজে পেতে পারেন কিনা আমার কোনও ধারণা নেই তবে আপনি যদি ভুল কী দিয়ে অ্যাপ্লিকেশনটি সাইন করেন তবে বিকাশকারী কনসোল (যেখানে আপনি অ্যাপস প্রকাশ করেন) আপনাকে বলবে যে এটি ভুল। আপনি তাদের সব চেষ্টা করতে পারেন।
লগক্যাট

এখানে একটি সর্বজনীন কী আছে 'বিকাশকারী কনসোল'> 'প্রোফাইল সম্পাদনা করুন'। আমি কীভাবে এটি নিজের সাহায্য করার জন্য ব্যবহার করতে পারি?
xliiv

কীস্টোর ফাইলটি যদি দুর্ঘটনাক্রমে মুছে ফেলা হয় তবে কীভাবে পুনরায় তৈরি করবেন?
মাভেň ツ

@ মাভেই ツ আপনি পারবেন না আপনি যদি আপনার কীস্টোরটি আলগা করেন তবে আপনি টোস্ট। গুগল [অ্যাপ সাইন ইন] প্রবর্তন করেছে, যেখানে তারা সই করার তথ্যগুলিকে ধরে রাখে। [অ্যাপ্লিকেশন সাইন ইন]: সমর্থন.google.com/googleplay/android-developer/answer/…
মির

উত্তর:


401

প্রথমে, APK কে আনজিপ করুন এবং ফাইলটি / META-INF/ANDROID_.RSA এক্সট্রাক্ট করুন (এই ফাইলটি CERT.RSAও হতে পারে, তবে কেবল একটি .RSA ফাইল থাকতে হবে))

তারপরে এই আদেশটি জারি করুন:

keytool -printcert -file ANDROID_.RSA

আপনি এর মতো শংসাপত্রের ফিঙ্গারপ্রিন্ট পাবেন:

     MD5:  B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
     SHA1: 16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68
     Signature algorithm name: SHA1withRSA

তারপরে আপনার সই করা কীস্টোরের সমস্ত উপকরণটি মুদ্রণ করতে আবার কীটোলটি ব্যবহার করুন:

keytool -list -keystore my-signing-key.keystore

আপনি এলিয়াসগুলির একটি তালিকা এবং তাদের শংসাপত্রের ফিঙ্গারপ্রিন্ট পাবেন:

android_key, Jan 23, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB

ভাল খবর! আমরা এখন নির্ধারণ করতে পারি যে এপিকে এই কীস্টোরের সাথে এবং 'android_key' নামটি দিয়ে সই করা হয়েছে।

কীটোল জাভার অংশ, সুতরাং আপনার PATH এর মধ্যে জাভা ইনস্টলেশন dir রয়েছে তা নিশ্চিত করুন।


1
এই জন্য আপনাকে ধন্যবাদ. আমি আমার গিথুব প্রকল্পে এটি করার জন্য একটি সরঞ্জাম যুক্ত করেছি। github.com/RichhardBronosky/ota-tools/blob/master/…
ব্রুনো ব্রোনোস্কি

হাই আমি এই আদেশটি বুঝতে পারছি না ~ keytool -list -keystore আমার-স্বাক্ষর-key.keystore, আমার-স্বাক্ষর-key.keystore এর
Thoman

2
@ থোমান মাই-সইিং-কি.কিস্টোর কী-স্টোর ফাইলটির নাম যা কীগুলিতে থাকে যা এপিকে সাইন করতে ব্যবহৃত হয়
1800 তথ্য

এটার জন্য অনেক ধন্যবাদ! আমাদের অ্যাপটি প্লেস্টোর দ্বারা পুনরায় স্বাক্ষরিত হয়েছিল এবং এর ফলে গুগল লগইন ব্যর্থ হয়। আমাকে সরাসরি প্লেস্টোর থেকে APK ডাউনলোড করতে হয়েছিল এবং এটি গুগল ক্লাউড কনসোলে রেজিস্ট্রেশন করতে প্রকৃত SHA1 খুঁজে পেতে হয়েছিল।
অ্যালভিন রুসলি

333

keytoolকোনও ফাইল সন্ধান ছাড়াই কীস্টোর বা একটি APK এর স্বাক্ষর যাচাই করতে আপনি জাভা 7 এর কী এবং শংসাপত্র পরিচালনা সরঞ্জাম ব্যবহার করতে পারেন ।

একটি APK এর স্বাক্ষর

keytool -printcert -jarfile app.apk

আউটপুটটি APK ফাইলটির স্বাক্ষর মালিক / ইস্যুকারী এবং MD5, SHA1 এবং SHA256 ফিঙ্গারপ্রিন্ট প্রকাশ করবে app.apk

(নোট করুন যে -jarfileযুক্তিটি জাভা in-এ প্রবর্তিত হয়েছিল; আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন))

একটি কীস্টোরের স্বাক্ষর

keytool -list -v -keystore release.jks

release.jksশংসাপত্রের ফিঙ্গারপ্রিন্টগুলি (MD5, SHA1 এবং SHA256) সহ আউটপুট কীস্টোর ফাইলে আলিয়াস (এন্ট্রি) প্রকাশ করবে ।

যদি APK এবং কীস্টোর মিলের মধ্যে SHA1 আঙুলের ছাপগুলি থাকে, তবে আপনি নিশ্চিন্ত থাকতে পারেন যে অ্যাপটি কীটির সাথে স্বাক্ষরিত।


1
@goRGon আপনি কি জাভা 7 বা তার পরে ব্যবহার করছেন?
পল ল্যামারটসমা

2
@goRGon আসলে, -jarfileযুক্তিটি জাভা with. এর সাথে প্রবর্তিত হয়েছিল আমি উত্তরটি আপডেট করেছি।
পল ল্যামারটসমা

41
এটি একটি স্বীকৃত উত্তর হওয়া উচিত। কোনও আনজিপিংয়ের প্রয়োজন নেই
জেসেক কুইসিও

1
এটি অদ্ভুত যে জাভা ১. এখনও ম্যাকের উপর ডিফল্টরূপে প্রেরণ করা হয়। আমি আরও সাম্প্রতিক সংস্করণে আপডেট করার পরামর্শ দেব।
পল ল্যামার্টসমা

2
@ রিচার্ড ব্রোনোস্কি এটি সত্য নয়। আমি আইওএস ডেভ না করেই তিন বছরেরও বেশি সময় ধরে অ্যান্ড্রয়েড বিকাশকারী। যদিও, আমি বিভিন্ন কারণে আপনার মূল বিষয়টির সাথে একমত। জাভা 1.6 এখন পর্যন্ত সর্বাধিক বর্ধিত সংস্করণ বলে মনে হচ্ছে, বা কমপক্ষে বিস্তৃত এবং গ্রহণযোগ্য সমাধানটি 1.6 এবং 1.7 উভয়ের সাথেই কাজ করে, এটি কেবলমাত্র 1.7 দিয়ে কাজ করবে, তাই আমি মনে করি না এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ( এখনো!). (এছাড়াও নোট করুন যে গৃহীত উত্তরটি ফর্ম ২০১২, যদিও এটি উত্তর এপ্রিল, ২০১৪)
ফ্রান মারজোয়া

17

পল ল্যামার্তস্মার উত্তরটি তৈরি করতে, এই কমান্ডটি বর্তমান ডিয়ারে সমস্ত APK এর নাম এবং স্বাক্ষর মুদ্রণ করবে (আমি sh ব্যবহার করছি কারণ পরে আমাকে গ্রেপ থেকে পাইপ দেওয়ার দরকার আছে):

find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;

নমুনা আউটপুট:

APK: ./com.google.android.youtube-10.39.54-107954130-minAPI15.apk
Signer #1:

Signature:

Owner: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Issuer: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Serial number: 4934987e
Valid from: Mon Dec 01 18:07:58 PST 2008 until: Fri Apr 18 19:07:58 PDT 2036
Certificate fingerprints:
         MD5:  D0:46:FC:5D:1F:C3:CD:0E:57:C5:44:40:97:CD:54:49
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
         SHA256: 3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A
         Signature algorithm name: MD5withRSA
         Version: 1

APK: ./com.google.android.youtube_10.40.56-108056134_minAPI15_maxAPI22(armeabi-v7a)(480dpi).apk
Signer #1:

Signature:

Owner: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Issuer: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Serial number: 4934987e
Valid from: Mon Dec 01 18:07:58 PST 2008 until: Fri Apr 18 19:07:58 PDT 2036
Certificate fingerprints:
         MD5:  D0:46:FC:5D:1F:C3:CD:0E:57:C5:44:40:97:CD:54:49
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
         SHA256: 3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A
         Signature algorithm name: MD5withRSA
         Version: 1

বা যদি আপনি কেবল এসএএএ 1 সম্পর্কে যত্নশীল হন:

find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;

নমুনা আউটপুট:

APK: ./com.google.android.youtube-10.39.54-107954130-minAPI15.apk
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
APK: ./com.google.android.youtube_10.40.56-108056134_minAPI15_maxAPI22(armeabi-v7a)(480dpi).apk
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00

মজাদার! আমি আমাদের ব্যক্তিগতভাবে হোস্ট করা ডিস্ট্রিবিউশন স্টোরটিতে যাচাই করেছিলাম যে অ্যাপটি সঠিকভাবে স্বাক্ষরিত হয়নি। আমি আলাদা কী শব্দযুক্ত বার্তা প্রদর্শন করতে কী উপনামটি "androiddebugkey" হয় কিনা তা পর্যবেক্ষণ করার জন্যও আমি বিশেষ দ্রষ্টব্য নই। আমি মনে করি গুগল প্লে একইভাবে বৈধতা দেয়। আমি মনে করি আপনি APKMirror এ APKs যাচাই করার জন্য এটি ব্যবহার করছেন?
পল ল্যামার্তসমা

@ পলল্যামার্টসমা হ্যাঁ, আমরা আছি।
আর্টেম রাশাকোভস্কিই

11

স্বাক্ষর শংসাপত্রটি দেখার জন্য খুব সহজ উপায়:

jarsigner.exe -verbose -verify -certs myapk.apk

এটি কেবল ডিএন দেখায়, সুতরাং আপনার যদি একই ডিএন এর সাথে দুটি শংসাপত্র থাকে তবে আপনাকে ফিঙ্গারপ্রিন্ট দ্বারা তুলনা করতে হতে পারে।


ডিএন কী? বেশিরভাগ ক্ষেত্রে আমি এর মতো অনেকগুলি লাইন পেয়েছি: এক্স.509, সিএন = {প্রথম নাম এবং পদবি last [শংসাপত্রটি {তারিখ থেকে {তারিখ_ টু}] বৈধ
xliiv

ডিএন মানে 'বিশিষ্ট নাম', আপনার ক্ষেত্রে এটি 'সিএন = {প্রথম নাম এবং পদবি।' অংশ।
নিকোলে এলেনকভ

6

কীস্টোর এক্সপ্লোরারের মতো শংসাপত্র এবং কী স্টোরগুলি পরীক্ষা করার জন্য অনেক ফ্রিওয়্যার রয়েছে ।

APK আনজিপ করুন এবং মেটা-আইএনএফ / ?. আরএসএ ফাইলটি খুলুন। ? সিআরটি বা এন্ড্রয়েড হতে পারে বা অন্য কিছু হতে পারে। এটি আপনার apk এর সাথে সম্পর্কিত সমস্ত তথ্য প্রদর্শন করবে।


4

apksignerঅ্যান্ড্রয়েড এসডিকে অংশ হিসাবে থাকা সরঞ্জামটি দিয়ে আপনি এটি করতে পারেন :

apksigner verify --print-certs my_app.apk

আপনি বিল্ড-টুলস ডিরেক্টরিতে অ্যাপসাইনারটি খুঁজে পেতে পারেন। উদাহরণ স্বরূপ: ~/Library/Android/sdk/build-tools/29.0.1/apksigner

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.