এই টিউটোরিয়ালটি আপনাকে দেখাবে Java keytool ইউটিলিটি দিয়ে Android-এর জন্য কীভাবে একটি CSR (Certificate Signing Request) তৈরি করবেন।
Android নিজে ফোনে পাবলিক-CA TLS CSR তৈরি করে না: একটি পাবলিক-CA সার্টিফিকেট কোনো সার্ভারের জন্য (অথবা ব্যবহারকারীর নিয়ন্ত্রণাধীন কোনো ডিভাইসের জন্য) ইস্যু করা হয়, এবং Android অ্যাপ ও ব্রাউজারগুলো তা ব্যবহার করে। নিচের keytool প্রবাহটি একটি Java কীস্টোর থেকে একটি PKCS #10 রিকোয়েস্ট তৈরি করে, যা তখনই সঠিক পথ যখন আপনার এমন একটি TLS সার্টিফিকেট প্রয়োজন যা একটি Android অ্যাপ বা মোবাইল-লক্ষ্যবস্তু ওয়েবসাইট বিশ্বাস করবে।
আপনার ক্ষেত্রে সঠিক পদ্ধতি বেছে নিন
“CSR for Android” তিনটি ভিন্ন জিনিস বোঝাতে পারে। কোনো কমান্ড চালানোর আগে নিশ্চিত হয়ে নিন যে আপনি সঠিক পাতায় আছেন:
- Android ক্লায়েন্ট যে সার্ভারের সাথে যোগাযোগ করবে তার জন্য একটি TLS সার্টিফিকেট। এটি সবচেয়ে সাধারণ ক্ষেত্র, এবং এই পাতার বাকি অংশ এটিই আলোচনা করে। keytool ব্যবহার করুন (নিচে) অথবা আমাদের CSR Generator দিয়ে সার্ভারের বাইরে CSR তৈরি করুন, তারপর ইস্যুকৃত সার্টিফিকেটটি ইনস্টল করুন সেই ওয়েব সার্ভার, API গেটওয়ে, বা MQTT ব্রোকারে যেখানে আপনার অ্যাপ পৌঁছায়।
- একটি APK বা AAB-এর জন্য সাইনিং কী। Android অ্যাপ সাইনিং একটি Java কীস্টোরে একটি স্ব-স্বাক্ষরিত RSA বা EC কী ব্যবহার করে: এখানে কোনো পাবলিক CA জড়িত নেই এবং জমা দেওয়ার মতো কোনো CSR নেই। Android Studio-র Build > Generate Signed Bundle / APK উইজার্ড থেকে keytool দিয়ে কী তৈরি করুন (অথবা নিজে হাতে keytool চালান), তারপর Google Play App Signing-এর সাথে কীটি নথিভুক্ত করুন। এর জন্য পাবলিক সার্টিফিকেট অর্ডার করবেন না।
- MDM বা EMM দ্বারা সরবরাহকৃত একটি ডিভাইস সার্টিফিকেট। Android Enterprise SCEP, EST, বা Managed Configurations API-এর মাধ্যমে ব্যবস্থাপিত ডিভাইসে ক্লায়েন্ট সার্টিফিকেট ইস্যু করে। CSR স্বয়ংক্রিয়ভাবে তৈরি হয় এবং MDM দ্বারা সার্টিফিকেট ইনস্টল করা হয়। এখানে ম্যানুয়াল keytool ধাপের প্রয়োজন নেই।
যদি আপনার ক্ষেত্রটি প্রথমটি হয়, তাহলে চালিয়ে যান। এই প্রবাহে দুটি অংশ আছে: প্রথমে একটি PKCS12 কীস্টোর তৈরি করুন যা প্রাইভেট কী ধারণ করবে, তারপর সেই কীস্টোর থেকে CSR এক্সপোর্ট করুন।
আপনার যা যা প্রয়োজন হবে
- একটি Java ইনস্টলেশন (JDK বা JRE) যাতে আপনার PATH-এ keytool কমান্ডটি ব্যবহারযোগ্য থাকে।
keytool -helpদিয়ে নিশ্চিত করুন। Windows-এ, Java-র bin ফোল্ডারটি PATH-এ থাকতে হবে, অথবা আপনি সরাসরি JDK-এর bin ডিরেক্টরি থেকে keytool চালাতে পারেন। - যে সঠিক fully qualified domain name (FQDN) আপনি সুরক্ষিত করতে চান (উদাহরণস্বরূপ www.yoursite.com), এবং একই সার্টিফিকেটে থাকা অন্য যেকোনো হোস্টনেম (Subject Alternative Name তালিকার জন্য)।
- Distinguished Name-এর জন্য আপনার প্রতিষ্ঠানের আইনি বিবরণ (দেশ, রাজ্য, শহর, প্রতিষ্ঠানের নাম)। মূল্যগুলো ঠিক যেমন পাবলিক ব্যবসায়িক রেকর্ডে দেখা যায় ঠিক তেমনই ব্যবহার করুন: CA অমিল প্রত্যাখ্যান করবে।
ধাপ ১: কীস্টোর এবং প্রাইভেট কী তৈরি করুন
যদি আপনি ইতিমধ্যে আপনার CSR তৈরি করে থাকেন, তাহলে সরাসরি CSR জমা দিন-তে যান এবং তারপর Android SSL ইনস্টলেশন নির্দেশাবলীতে যান।
একটি টার্মিনাল (অথবা Windows-এ Command Prompt) খুলুন এবং নিচের keytool কমান্ডটি চালান। এটি PKCS12 ফরম্যাটে একটি নতুন কীস্টোর তৈরি করে, এর ভেতরে একটি 2048-বিট RSA কী পেয়ার তৈরি করে, এবং আপনার বেছে নেওয়া উপনামের অধীনে কী সংরক্ষণ করে। JDK 9 থেকে PKCS12 হলো ডিফল্ট কীস্টোর ফরম্যাট; পুরনো JKS ফরম্যাটটি অপ্রচলিত এবং নতুন কী-এর জন্য এড়িয়ে চলা উচিত।
keytool -genkeypair
-alias myalias
-keyalg RSA -keysize 2048
-storetype PKCS12
-keystore yoursite.p12
-validity 825
Windows-এ, একই কমান্ড এক লাইনে এমন দেখায় (মনে রাখবেন, একটি পরম পথ ব্যবহার করুন যাতে আপনি পরে ফাইলটি খুঁজে পেতে পারেন):
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore C:certsyoursite.p12 -validity 825
ফ্ল্যাগগুলো কী করে:
- -alias myalias: কীস্টোরের ভেতরের এন্ট্রির নাম। এমন একটি লেবেল বেছে নিন যা আপনি চিনতে পারবেন এবং লিখে রাখুন। CSR এক্সপোর্ট করার সময় এবং স্বাক্ষরিত সার্টিফিকেট ইমপোর্ট করার সময় আপনাকে ঠিক এই উপনামটিই আবার ব্যবহার করতে হবে।
- -keyalg RSA -keysize 2048: বর্তমানে প্রতিটি CA যে সর্বনিম্ন মান গ্রহণ করে তা হলো একটি 2048-বিট RSA কী। দীর্ঘস্থায়ী কী-এর জন্য 3072 বিট ব্যবহার করুন, অথবা ছোট, দ্রুততর কী-এর জন্য -keyalg EC -groupname secp256r1 দিয়ে একটি ECDSA কী তৈরি করুন (প্রতিটি আধুনিক CA ECDSA P-256 এবং P-384-এর বিপরীতে ইস্যু করে)।
- -storetype PKCS12: আধুনিক PKCS12 কীস্টোর জোরপূর্বক নির্ধারণ করে। এর সাথে মিলিত এক্সটেনশন হলো .p12 (অথবা .pfx)।
- -keystore yoursite.p12: তৈরি করার কীস্টোর ফাইল। নামটি এমন কিছু দিয়ে প্রতিস্থাপন করুন যা আপনি মনে রাখবেন, এবং ফাইলটি নিরাপদে রাখুন: এটি আপনার প্রাইভেট কী ধারণ করে।
- -validity 825: কীস্টোরের ভেতরের স্ব-স্বাক্ষরিত প্লেসহোল্ডার সার্টিফিকেটটি কতদিন বৈধ থাকবে। CA থেকে স্বাক্ষরিত সার্টিফিকেট পরে এটি প্রতিস্থাপন করে, তাই এই মান উৎপাদন জীবনকালকে প্রভাবিত করে না।
keytool এরপর একটি কীস্টোর পাসওয়ার্ড চাইবে। একটি শক্তিশালী পাসওয়ার্ড বেছে নিন এবং আপনার সিক্রেটস ম্যানেজারে সংরক্ষণ করুন। পরবর্তী প্রতিটি keytool কমান্ডের জন্য এবং কীস্টোর ব্যবহারকারী যেকোনো সার্ভারের জন্য এটির প্রয়োজন হবে। PKCS12 কীস্টোরে, কী পাসওয়ার্ড কীস্টোর পাসওয়ার্ডের সমান, তাই মনে রাখার মতো একটিই পাসওয়ার্ড আছে।
ধাপ ২: আপনার প্রতিষ্ঠানের বিবরণ প্রবেশ করান (DN)
keytool এখন Distinguished Name (DN) চাইবে: যে পরিচয় ক্ষেত্রগুলো CSR-এ প্রদর্শিত হবে। প্রতিটি প্রম্পটের উত্তর আপনার প্রতিষ্ঠানের সঠিক আইনি মান দিয়ে দিন। শুধু স্ট্যান্ডার্ড ASCII অক্ষর ব্যবহার করুন: অ-ল্যাটিন অক্ষর রিকোয়েস্ট ভেঙে দেয়। যতিচিহ্নও গুরুত্বপূর্ণ, কারণ CA আপনার মানগুলো পাবলিক ব্যবসায়িক রেকর্ডের সাথে মেলায়।
- What is your first and last name? এটি Common Name (CN)-এর জন্য keytool-এর ভাষা। আপনি যে সঠিক FQDN সুরক্ষিত করতে চান তা লিখুন (উদাহরণস্বরূপ www.yoursite.com), অথবা *.yoursite.com-এর মতো একটি ওয়াইল্ডকার্ড। কোনো ব্যক্তির নাম লিখবেন না।
- What is the name of your organizational unit? CA/Browser Forum 2022-09-01 তারিখে organizationalUnitName অ্যাট্রিবিউট বাতিল করেছে, এবং পাবলিক CA-গুলো ইস্যুকৃত সার্টিফিকেট থেকে এটি সরিয়ে ফেলে। লক্ষ্য করুন, Enter চাপলে ক্ষেত্রটি খালি থাকে না: keytool নিজস্ব ডিফল্ট মান বসিয়ে দেয়, ফলে DN-এ OU=Unknown যুক্ত হয় এবং সেই মান CSR-এ চলে যায়। সত্যিকার অর্থে অ্যাট্রিবিউটটি বাদ দিতে, প্রম্পটগুলো এড়িয়ে যান এবং -dname দিয়ে সরাসরি DN পাস করুন, স্ট্রিং থেকে OU বাদ দিয়ে।
- What is the name of your organization? আপনার কোম্পানির সম্পূর্ণ আইনি নাম লিখুন, ঠিক যেমনটি নিবন্ধিত (উদাহরণস্বরূপ Your Company LLC)। OV এবং EV সার্টিফিকেটের জন্য প্রয়োজনীয়; Domain Validation (DV) সার্টিফিকেটের ক্ষেত্রে মানটি উপেক্ষা করা হয়, তাই যেকোনো সংক্ষিপ্ত প্লেসহোল্ডার কাজ করবে।
- What is the name of your city or locality? আপনার কোম্পানি যেখানে নিবন্ধিত সেই শহরের সম্পূর্ণ নাম লিখুন (উদাহরণস্বরূপ Seattle, SEA নয়)।
- What is the name of your state or province? সম্পূর্ণ রাজ্য বা প্রদেশের নাম লিখুন (উদাহরণস্বরূপ California, CA নয়)।
- What is the two-letter country code for this unit? দুই-অক্ষরের ISO 3166-1 alpha-2 কোড লিখুন (উদাহরণস্বরূপ US, GB, DE)। নিশ্চিত না থাকলে সরকারি ISO তালিকা দেখুন।
keytool একত্রিত DN প্রিন্ট করে এবং জিজ্ঞাসা করে Is CN=…, OU=…, O=…, L=…, ST=…, C=… correct? নিশ্চিত করতে yes লিখে Enter চাপুন। যদি কোনো টাইপো লক্ষ্য করেন, তাহলে no লিখুন এবং keytool প্রম্পটগুলো পুনরায় শুরু করবে।
ধাপ ৩: একটি Subject Alternative Name সহ CSR এক্সপোর্ট করুন
এখন keytool -certreq দিয়ে CSR এক্সপোর্ট করুন। প্রতিটি পাবলিক CA হোস্টনেমটি Common Name (CN)-এর বিপরীতে নয়, বরং Subject Alternative Name (SAN) এক্সটেনশনের বিপরীতে যাচাই করে (ব্রাউজার এবং আধুনিক TLS লাইব্রেরিগুলো বহু বছর আগে CN যাচাই বন্ধ করে দিয়েছে), তাই একটি মাত্র হোস্টনেমের জন্যও একটি SAN অন্তর্ভুক্ত করুন। ধাপ ১-এ সেট করা একই উপনাম ব্যবহার করুন:
keytool -certreq
-alias myalias
-file certreq.csr
-keystore yoursite.p12
-ext SAN=DNS:www.yoursite.com,DNS:yoursite.com
Windows-এ, একই কমান্ড এক লাইনে:
keytool -certreq -alias myalias -file certreq.csr -keystore C:certsyoursite.p12 -ext SAN=DNS:www.yoursite.com,DNS:yoursite.com
মাল্টি-ডোমেন সার্টিফিকেটের জন্য প্রতিটি হোস্টনেমের জন্য একটি করে DNS: এন্ট্রি যোগ করুন (কমা দিয়ে আলাদা করুন, স্পেস ছাড়া)। ওয়াইল্ডকার্ডের জন্য, DNS:*.yoursite.com ব্যবহার করুন। keytool কীস্টোর পাসওয়ার্ড চাইবে, তারপর CSR-টি আপনার বর্তমান ডিরেক্টরিতে certreq.csr-এ লিখবে।
ধাপ ৪: CSR খুলুন এবং CA-এর কাছে জমা দিন
যেকোনো টেক্সট এডিটরে (Notepad, TextEdit, nano, vim) certreq.csr খুলুন। আপনি এটি টার্মিনালেও প্রিন্ট করতে পারেন:
cat certreq.csr
Windows Command Prompt-এ:
type certreq.csr
আপনি এমন একটি ব্লক দেখতে পাবেন:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----
পুরো ব্লকটি নির্বাচন করুন, যাতে BEGIN NEW CERTIFICATE REQUEST এবং END NEW CERTIFICATE REQUEST লাইনগুলোও অন্তর্ভুক্ত থাকে (কিছু CA এগুলোকে BEGIN CERTIFICATE REQUEST / END CERTIFICATE REQUEST লেবেল দেয়: দুটি লেবেলই গ্রহণযোগ্য)। এটি কপি করুন এবং আপনার অর্ডার ফর্মের CSR ক্ষেত্রে পেস্ট করুন।
জমা দেওয়ার আগে CSR যাচাই করুন (ঐচ্ছিক)
CA-এর কাছে রিকোয়েস্ট পাঠানোর আগে Common Name, SAN এন্ট্রি, এবং কী সাইজ নিশ্চিত করা মূল্যবান। keytool কীস্টোর এন্ট্রির বিপরীতে একই তথ্য প্রিন্ট করে:
keytool -printcertreq -file certreq.csr
অনলাইন টুল পছন্দ করেন? রিকোয়েস্টের বিষয়বস্তু SSL Dragon-এর CSR Decoder-এ পেস্ট করুন এবং সাবজেক্ট, SAN তালিকা, এবং পাবলিক-কী প্যারামিটারগুলো পড়ে নিন। নিশ্চিত করুন যে Common Name ক্লায়েন্টরা যে হোস্টনেম ব্যবহার করবে তার সাথে মেলে এবং প্রতিটি প্রয়োজনীয় নাম Subject Alternative Name তালিকার অধীনে প্রদর্শিত হয়।
Android কি ইস্যুকৃত সার্টিফিকেট বিশ্বাস করবে?
হ্যাঁ, পাবলিকলি বিশ্বস্ত CA দ্বারা স্বাক্ষরিত যেকোনো সার্টিফিকেটের জন্য। Android একটি সিস্টেম রুট সার্টিফিকেট স্টোর সরবরাহ করে যা প্রধান ব্রাউজার ট্রাস্ট তালিকার প্রতিফলন করে, তাই সেই রুটগুলোর একটির অধীনে ইস্যু করা সার্টিফিকেট Chrome, WebView, এবং সিস্টেম ট্রাস্ট স্টোর ব্যবহারকারী যেকোনো অ্যাপ দ্বারা বিশ্বাস করা হয়, কোনো অতিরিক্ত কনফিগারেশন ছাড়াই।
যদি আপনি নিজেই ডিভাইসে সার্টিফিকেট (বা একটি প্রাইভেট CA রুট) ইনস্টল করছেন, তাহলে জেনে রাখার মতো দুটি সতর্কতা আছে:
- Android 7 এবং তার পরের সংস্করণে ব্যবহারকারী-ইনস্টলকৃত CA-গুলো অ্যাপ দ্বারা উপেক্ষা করা হয়। Android 7 (Nougat) থেকে, ডিফল্টভাবে শুধুমাত্র সিস্টেম স্টোর অ্যাপ ট্রাফিক দ্বারা বিশ্বাস করা হয়, এবং Google Chrome-ও ব্যবহারকারী-ইনস্টলকৃত CA উপেক্ষা করে। যদি আপনার অ্যাপকে একটি প্রাইভেট CA বিশ্বাস করতেই হয়, তাহলে ডেভেলপারকে একটি নেটওয়ার্ক সিকিউরিটি কনফিগারেশন-এর মাধ্যমে অপ্ট-ইন করতে হবে যেটিতে
<certificates src="user" />অন্তর্ভুক্ত থাকে। পাবলিক-CA সার্টিফিকেটের জন্য এটি প্রয়োজন নেই: এগুলো ইতিমধ্যে সিস্টেম স্টোরে থাকে। - একটি স্থিতিশীল শনাক্তকারীতে পিন করুন, কোনো একটি নির্দিষ্ট সার্টিফিকেটে নয়। যদি আপনি আপনার অ্যাপে সার্টিফিকেট পিনিং বাস্তবায়ন করেন, তাহলে পাবলিক-কী SPKI হ্যাশে বা ইস্যুকারী CA-তে পিন করুন, কোনো নির্দিষ্ট লিফ সার্টিফিকেটে নয়। অন্যথায় পরবর্তী নবায়নে ব্যবহারকারীরা লক আউট হয়ে যাবে।
পরবর্তী পদক্ষেপ
CA যখন CSR যাচাই করে আপনার সার্টিফিকেট ইস্যু করে, তখন ইস্যুকৃত সার্টিফিকেটটি একই কীস্টোরে ফিরে ইমপোর্ট করুন (একই উপনামের অধীনে), তারপর Android ক্লায়েন্ট যে সার্ভারে পৌঁছাবে সেখানে কীস্টোরটি স্থাপন করুন। ডিভাইস-পার্শ্বের ইনস্টল ধাপগুলোর জন্য আমাদের Android SSL ইনস্টলেশন নির্দেশিকা দেখুন, অথবা যদি আপনার ব্যাক এন্ড Tomcat, JBoss, Nginx, বা অন্য কোনো সার্ভারে চলে তাহলে how to install an SSL certificate-এর অধীনে প্ল্যাটফর্ম-নির্দিষ্ট ইনস্টল নির্দেশিকাগুলো দেখুন।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


