What is apk signing and the ways to sign an apk file easily without pc using android apps.
আসসালামু আলাইকুম।
অন্যান্য সকল ধর্মাবলম্বী ভাইদের জানাই অনেক-অনেক শুভেচ্ছা ও অভিনন্দন।
অনেক মাস পূর্বে আমি পিসিতে ApkTool ইন্সটলেশন ও তার ব্যবহার নিয়ে একটি পোস্ট করেছিলাম। নিচে পোস্টটির লিংক দেয়া হলো-
উক্ত পোস্টে মডিফাইড apk ফাইল sign করার জন্য আমি অ্যান্ড্রয়েড অ্যাপস ব্যবহার করতে বলেছিলাম। কেননা apk ফাইল sign করা পিসি অপেক্ষা অ্যান্ড্রয়েড দ্বারা সহজতর। তাই উপরোল্লিখিত পোস্টটিতে আমি আপনাদেরকে ZipSigner অথবা MiXplorer নামক ফাইল ম্যানেজার এর Mix Signer প্লাগিন-অ্যাপ ব্যবহার করতে পরামর্শ দিয়েছিলাম। সেখানে উক্ত অ্যাপ দুটি দ্বারা sign করার উপায় নিয়ে ভবিষ্যতে একটা পোস্ট করব বলার পরেও আর করা হয়ে ওঠেনি। হয়তো আর করাও হতো না, কিন্তু আমার আগামী পোস্টটি এর সাথে সম্পর্কিত হওয়ায় apk ফাইল sign নিয়ে পোস্ট করা আবশ্যক হয়ে উঠল। তাই আজ এ পোস্ট।
অনেকের মনে প্রশ্ন জাগতে পারে- অ্যান্ড্রয়েড অ্যাপ sign করা কি অথবা এর প্রয়োজনীয়তাটাই বা কি? তাদের মনের এ বিভ্রান্তি দূর করতে অ্যাপ signing নিয়ে কিছু কথা বলে নিই।
☞ What is apk signing or what are the necessity of apk signing?
অ্যাপ sign করা হলো ঐ অ্যাপকে থার্ড পার্টির হাত থেকে সিকিউর বা নিরাপদ রাখা। যেকোনো অ্যাপকেই ইন্সটল হওয়ার পূর্বে অবশ্যই নির্দিষ্ট সার্টিফিকেট দ্বারা signed হতে হয়। কোনো অ্যাপকে অ্যাপ মার্কেটে পাব্লিশ করতে হলে sign করতেই হবে।
একটি public-key সার্টিফিকেট, যেটা ডিজিটাল সার্টিফিকেট হিসেবেও পরিচিত, শুধুই public অথবা public ও private-key এর সমন্বয়ে গঠিত public-key বহন করে থাকে।এর সাথে কিছু মেটাডাটার সংযোগ-ও থাকে যা অ্যাপ প্রস্তুতকারককে আলাদা করে বিবেচনায় রাখে। নির্দিষ্ট private-key টা অ্যাপ প্রস্তুতকারকের নিজস্ব বা স্বতন্ত্র key যা তাকে চিহ্নিত করে।
যখন আপনি কোনো একটি অ্যাপকে sign করবেন তখন সাইনিং টুল আপনার অ্যাপের সাথে public-key সংযোজন করে দিবে। এই public-key ফিঙ্গারপ্রিন্টের মতো কাজ করে যা আপনাকে বা আপনার নির্দিষ্ট private-key এর ক্ষেত্রেই করবে। এভাবে ঐ অ্যাপ যাতে ভবিষ্যত আপডেটগুলো নির্দিষ্ট করে নির্দিষ্ট ডেভলপারের কাছ হতেই পায় তা সুনিশ্চিত করে। এই public-key ই নির্দিষ্ট সার্টিফিকেট তৈরি করে বলে একে app signing key ও বলা হয়ে থাকে। একই প্যাকেজ এর অন্তর্ভুক্ত প্রত্যেকে অ্যাপে একই সার্টিফিকেট ব্যবহার করতে হয় নির্দিষ্ট আপডেট পেতে হলে।
কোনো অ্যাপকে নিরাপদ ও তার নির্দিষ্টতা রক্ষা করতে বিভিন্ন উপায় অবলম্বন করা হয়। IOS অ্যাপ এর ক্ষেত্রে এরকম বিষয় হলো- Entitlement, Provisioning profile, Bundle ID এবং অ্যাপ মধ্যবর্তী বিষয়গুলোর জন্য একটি জায়গা বা হোস্ট। অ্যান্ড্রয়েড অ্যাপের ক্ষেত্রেও এমন কিছু হলো- Keystore, Key hash, Alias.
একটি অ্যান্ড্রয়েড অ্যাপ হলো একটি zip ফাইল। একে কোনো zip টুল দ্বারা আনজিপ করলে মধ্যের কম্পোনেন্ট ফাইল-ফোল্ডারগুলো দেখা যাবে। এক্ষেত্রে একটি signed এবং একটি unsigned অ্যাপের মধ্যে পার্থক্য হলো META-INF ফোল্ডার; signed অ্যাপে উক্ত ফোল্ডারটি বিদ্যমান যা একটি unsigned অ্যাপে পাওয়া যাবে না। এই ফোল্ডারটিতে সাধারণত তিনটি ফাইল পাওয়াা যায়।
1. MANIFEST.MF : Apk আর্কাইভে যতো ফাইল থাকে সেগুলোর লিস্ট এতে লিপিবদ্ধ থাকে এবং প্রত্যেক ফাইলের উপাদান বা কন্টেন্টসমূহের SHA1 hash base64 encoded অবস্থায় থাকে। উদাহরণ হিসেবে, অ্যান্ড্রয়েড প্রজেক্ট manifest এন্ট্রি-
Name: AndroidManifest.xml
SHA1-Digest: 2/Ek5ZsQE2qFvLZt2x4srQSSd7A=
2. CERT.SF : এটাও উক্ত MANIFEST.MF এর মতোই, কিন্তু পার্থক্য এই যে- এখানে MANIFEST.MF ফাইলের প্রতিটি লাইনের SHA1 hash থাকে। এর ক্ষেত্রে উদাহরণ-
Name: AndroidManifest.xml
SHA1-Digest: 6ycpIZPMu943qFF8EDpPun7j4UQ=
যেখানে 6ycpIZPMu943qFF8EDpPun7j4UQ= হলো MANIFEST.MF ফাইলের নিম্মের স্ট্রিংটির SHA1 hash.
"Name: AndroidManifest.xml
SHA1-Digest: 2/Ek5ZsQE2qFvLZt2x4srQSSd7A=
"
3. CERT.RSA : এটা signing এ ব্যবহৃত সার্টিফিকেট এর মতো CERT.SF ফাইলটির সার্টিফিকেট বহন করে।
উপরোক্ত ফাইল তিনটিই অ্যাপ sign এর মূল প্রমাণ। যাক, অ্যাপ signing নিয়ে অনেক আলোচনাই হলো। অনেকেই এসকলের হয়তো কিছুই বুঝবেন না, তাদের জন্য দুঃখিত। তারা শুধু এটুকুই জেনে রাখুন যে, sign ব্যতিত অ্যান্ড্রয়েড অ্যাপ ইন্সটল অসম্ভব। তো, এবারে মূল কার্যক্রমের দিকে এগোই। এক্ষেত্রে আমি দুটি পদ্ধতি দুটি অ্যাপ ব্যবহারের মাধ্যমে দেখাব।
১। ZipSigner অ্যাপ দ্বারাঃ ZipSigner [ডাউনলোড লিংক পোস্টের শেষাংশে রয়েছে] অ্যাপের মাধ্যমে apk ফাইল sign করতে অ্যাপটি ইন্সটল করে প্রবেশ করুন। অ্যাপের উপরের বাম কোণায় দেখুন CHOOSE IN/OUTPUT বাটন রয়েছে, ওটাতে ক্লিক করে আপনার unsigned apk ফাইলটি সিলেক্ট করুন।
এবারে নিম্মের স্ক্রিনশট অনুযায়ী Key/mode কে auto-testkey রেখে SIGN THE FILE বাটনে ক্লিক করুন, signing শুরু হয়ে যাবে এবং কয়েক সেকেন্ডের মধ্যেই তা সম্পন্নও হয়ে যাবে। Signed apk ফাইলটি আপনার unsigned apk ফাইলটির পাশেই পেয়ে যাবেন।
২। Mix Signer অ্যাপ ব্যবহার করেঃ এ পদ্ধতি অনুসরণ করা শুধুমাত্র MiXplorer নামক ফাইল ম্যানেজার ব্যবহারকারীদের জন্যই কাম্য। কেননা Mix Signer অ্যাপটি MiXplorer এর একটি প্লাগিন বা অ্যাড-অন মাত্র, যা ব্যবহার করতে মূল ভিত্তি অ্যাপের প্রয়োজন তো হবেই।যাদের অ্যাপ দুটি ইন্সটল করা আছে, তারা আমার লেখা অনুযায়ী কর্মকান্ড শুরু করে দিন। [ডাউনলোড লিংক পোস্টের শেষাংশে রয়েছে]
এভাবে apk ফাইল sign করা খুবই সহজ। MiXplorer ওপেন করে আপনার unsigned apk ফাইলটি খুঁজে বের করুন; এরপর সেটাকে ট্যাপ অ্যান্ড হোল্ড বা আইকনের উপরে টাচ করে, যেভাবে পারেন সিলেক্ট করুন। তিন ডটের মেনুতে ক্লিক করুন।
মেনু অপশন থেকে Sign এ ক্লিক করুন, Choose নামক পপআপ ডিসপ্লে থেকে TESTKEY সিলেক্ট করুন।
ওয়েট করার কয়েক সেকেন্ডের মধ্যেই unsigned apk এর পাশাপাশি signed apk পেয়ে যাবেন।
উপরে উল্লিখিত পদ্ধতিদ্বয়ের উভয়টিই সহজ, তবে আমি মনে করি দ্বিতীয়টি তুলনামূলকভাবে একটু বেশি সহজ। পিসিতে apk ফাইল sign করতে নিজস্ব keystore তৈরি করতে হয়, এরপরে সে keystore দ্বারা apk ফাইল sign করতে হয়। এসবই কমান্ড লাইনের ব্যাপার, যদিও একটা GUI (Graphical User Interface) অ্যাপ্লিকেশন রয়েছে।
যাই হোক, পিসি দ্বারা sign করার উপায় নিয়ে ভবিষ্যতে আমি অন্য একটা আর্টিকেল লিখব আশা করি। অনেক লেখা হয়েছে, এখানে আর কিছু যোগ করতে চাই না।
✰Download Assets:
- ZipSigner [1.1mb]
- MiXplorer [2.2mb]
- Mix Signer [530kb]
পোস্টটি ভালো না লাগলে দুঃখিত। কোনো ভুল পেলে দয়া করে জানাবেন, আমি অতি শীঘ্র তা সংশোধন করতে চেষ্টা করব; শুধু-শুধু কমেন্টে নিন্দনীয় ভাষা ব্যবহার করে নিজের বংশ সম্বন্ধে অন্যদেরকে খারাপ কিছু ভাবনার সুযোগ দিবেন না।
ধন্যবাদ।।।