এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে GlassFish-এর (এখন Eclipse GlassFish) জন্য একটি CSR (Certificate Signing Request) তৈরি করবেন Java keytool ইউটিলিটি ব্যবহার করে।
GlassFish একটি সহায়ক দিক থেকে ব্যতিক্রমী: একটি নতুন ইনস্টলেশনে ইতিমধ্যেই একটি keystore থাকে (keystore.p12, Eclipse GlassFish 7.1 এবং তার পরবর্তী সংস্করণে, অথবা keystore.jks, পুরোনো বিল্ডে) এবং s1as alias-এর অধীনে একটি ডিফল্ট সার্টিফিকেট এন্ট্রি থাকে। আপনি সরাসরি সেই বিদ্যমান কী থেকে CSR তৈরি করতে পারেন, অথবা একই alias-এর অধীনে একটি নতুন কী দিয়ে সেটি প্রতিস্থাপন করতে পারেন। যেভাবেই করুন না কেন, স্বাক্ষরিত সার্টিফিকেট ইম্পোর্ট করার সময় একই alias পুনরায় ব্যবহার করা হয়, ফলে কী, CSR এবং ইস্যু করা সার্টিফিকেট সবই এক জায়গায় থাকে।
যা যা আপনার প্রয়োজন হবে
- একটি কার্যকরী GlassFish (বা Eclipse GlassFish) ইনস্টলেশন। ডিফল্ট keystore ডোমেইনের config ডিরেক্টরিতে থাকে, যেমন glassfish/domains/domain1/config/keystore.p12, Eclipse GlassFish 7.1 এবং তার পরবর্তী সংস্করণে, অথবা keystore.jks, পুরোনো বিল্ডে।
- keytool কমান্ড ব্যবহারের জন্য একটি Java ইনস্টলেশন। GlassFish একটি JDK সহ আসে, তাই keytool সাধারণত ইতিমধ্যেই path-এ থাকে।
keytool -helpদিয়ে নিশ্চিত করুন। - GlassFish সার্ভারে শেল বা টার্মিনাল অ্যাক্সেস। প্রাইভেট কী অবশ্যই এই সার্ভারেই থাকতে হবে।
- আপনি যে ডোমেইনটি সুরক্ষিত করতে চান তার সঠিক fully qualified domain name (FQDN), যেমন www.yourdomain.com, এবং SAN ফিল্ডের জন্য অতিরিক্ত যেকোনো হোস্টনেম।
- CSR-এর Distinguished Name-এর জন্য আপনার প্রতিষ্ঠানের আইনগত তথ্য (দেশ, রাজ্য, শহর, প্রতিষ্ঠানের নাম)।
- ডোমেইনের জন্য GlassFish-এর master password। ফ্যাক্টরি ডিফল্ট হলো changeit; প্রোডাকশন সিস্টেমে এটি
asadmin change-master-passwordদিয়ে পরিবর্তন করুন।
CSR তৈরি করার দুটি উপায়
আপনি যদি ইতিমধ্যেই আপনার CSR তৈরি করে থাকেন, তাহলে সরাসরি এগিয়ে যান CSR জমা দিন অংশে এবং তারপর GlassFish-এ আপনার SSL সার্টিফিকেট ইনস্টল করুন।
GlassFish-এ keytool-এর দুটি সাধারণ প্রবাহ রয়েছে। আপনার পরিস্থিতির সাথে মিলে যায় এমনটি বেছে নিন:
- অপশন A: বিদ্যমান s1as কী থেকে CSR তৈরি করুন (প্রস্তাবিত)। একটি নতুন GlassFish ডোমেইনে ইতিমধ্যেই ডিফল্ট keystore-এর ভেতরে s1as alias-এর অধীনে একটি প্রাইভেট কী থাকে (keystore.p12, 7.1+ এ, keystore.jks, পুরোনো বিল্ডে)। সবচেয়ে দ্রুত ও কম ঝুঁকিপূর্ণ পথ হলো সেই কী যেমন আছে তেমন রেখে দিয়ে শুধু তা থেকে একটি CSR এক্সপোর্ট করা। যান অপশন A-তে।
- অপশন B: ডিফল্ট s1as কী প্রতিস্থাপন করুন একটি নতুন কী দিয়ে, তারপর CSR তৈরি করুন। এটি ব্যবহার করুন যদি আপনি একটি জানা, বর্তমান কী সাইজ এবং DN চান, অথবা যদি আপনার সন্দেহ হয় যে ডিফল্ট কীটি ব্যবহার হয়েছে বা প্রকাশ পেয়েছে। যান অপশন B-তে।
আপনি যে অপশনই বেছে নিন না কেন, alias অবশ্যই s1as থাকতে হবে (অথবা, যদি আপনি এটি পরিবর্তন করেন, তাহলে আপনাকে domain.xml-ও আপডেট করতে হবে যাতে তা মিলে যায়)। GlassFish-এর HTTPS লিসেনার alias দিয়ে সার্টিফিকেট খুঁজে বের করে, তাই একটি অমিলযুক্ত alias মানে GlassFish কী খুঁজে পাবে না এবং TLS শুরু হবে না।
অপশন A: বিদ্যমান s1as কী থেকে CSR তৈরি করুন
ধাপ ১: GlassFish config ডিরেক্টরিতে যান
একটি টার্মিনাল খুলুন এবং আপনার ডোমেইনের keystore ধারণকারী ডিরেক্টরিতে যান। একটি ডিফল্ট ইনস্টলেশনে, এটি হলো domain1-এর config ফোল্ডার:
cd /opt/glassfish7/glassfish/domains/domain1/config
আপনি যেখানে GlassFish ইনস্টল করেছেন সে অনুযায়ী পাথটি সামঞ্জস্য করুন (পুরোনো GlassFish 4 বিল্ডগুলো একটি glassfish4/ টপ ফোল্ডারের নিচে ইনস্টলেশন রাখে; Eclipse GlassFish 6, 7, এবং 8 সাধারণত glassfish7/, glassfish8/ বা অনুরূপ ফোল্ডারের নিচে ইনস্টল হয়)। যদি আপনি নিজের ডোমেইন তৈরি করে থাকেন, তাহলে domain1-এর জায়গায় সেই ডোমেইনের নাম দিন। এই ডিরেক্টরিতে ls *.p12 *.jks চালিয়ে keystore ফাইলনেম নিশ্চিত করুন: Eclipse GlassFish 7.1 এবং তার পরবর্তী সংস্করণে আপনি keystore.p12 দেখতে পাবেন; পুরোনো বিল্ডে আপনি keystore.jks দেখতে পাবেন। নিচে যেখানেই কমান্ডে keystore.jks দেখানো হয়েছে, সেখানে সেই ফাইলনেমটি ব্যবহার করুন।
ধাপ ২: s1as এন্ট্রি বিদ্যমান কিনা নিশ্চিত করুন
keystore-এর বিষয়বস্তু তালিকাভুক্ত করুন এবং যাচাই করুন যে s1as বিদ্যমান এবং এটি একটি PrivateKeyEntry:
keytool -list -v -keystore keystore.jks -alias s1as
keystore পাসওয়ার্ড দিন (ফ্যাক্টরি ডিফল্ট changeit; একটি প্রোডাকশন সার্ভারে এটি আপনার ডোমেইন master password-এর সাথে মিলবে)। আউটপুটে Entry type: PrivateKeyEntry লাইনটি অন্তর্ভুক্ত থাকা উচিত। যদি এর বদলে আপনি Alias <s1as> does not exist বার্তা পান, তাহলে অপশন B-তে যান এবং একটি নতুন এন্ট্রি তৈরি করুন।
ধাপ ৩: SAN সহ CSR এক্সপোর্ট করুন
আধুনিক ব্রাউজার এবং TLS ক্লায়েন্টগুলো কেবল Common Name-এর বিরুদ্ধে নয়, বরং Subject Alternative Name (SAN) এক্সটেনশনের বিরুদ্ধে সার্টিফিকেট যাচাই করে। CSR-এ সরাসরি SAN অনুরোধ করুন যাতে CA সেগুলো ইস্যু করা সার্টিফিকেটে অন্তর্ভুক্ত করে:
keytool -certreq
-alias s1as
-keystore keystore.jks
-file glassfish.csr
-ext san=dns:yourdomain.com,dns:www.yourdomain.com
ফ্ল্যাগগুলোর অর্থ কী:
- -alias s1as: বিদ্যমান GlassFish সার্টিফিকেট alias। এই alias-এর অধীনে থাকা প্রাইভেট কী রিকোয়েস্টে স্বাক্ষর করে।
- -keystore keystore.jks: ডিফল্ট GlassFish keystore ফাইল। Eclipse GlassFish 7.1 এবং তার পরবর্তী সংস্করণ keystore.p12 নামে একটি PKCS12 keystore সহ আসে; পুরোনো বিল্ডগুলো keystore.jks নামে একটি JKS keystore ব্যবহার করে। এই ডিরেক্টরিতে যেটি প্রকৃতপক্ষে বিদ্যমান সেই ফাইলনেমটি ব্যবহার করুন। কমান্ডটি যেভাবেই হোক একই থাকে; keytool ফরম্যাট শনাক্ত করে।
- -file glassfish.csr: CSR-এর জন্য আউটপুট ফাইলনেম। আপনার পছন্দমতো যেকোনো নাম বেছে নিন।
- -ext san=dns:…: Subject Alternative Name এক্সটেনশন। সার্টিফিকেটটিকে যে সমস্ত হোস্টনেম কভার করতে হবে তার সবগুলোই তালিকাভুক্ত করুন, যার মধ্যে থাকবে খালি apex (yourdomain.com) এবং www সাবডোমেইন উভয়ই। কমা দিয়ে আলাদা করে আরও এন্ট্রি যোগ করুন, যেমন dns:api.yourdomain.com।
keytool keystore পাসওয়ার্ড চায় এবং বর্তমান ডিরেক্টরিতে glassfish.csr-এ CSR লেখে। CSR-এর Subject (Distinguished Name) s1as এন্ট্রিতে যা সংরক্ষিত আছে তা থেকে নেওয়া হয়; একটি নতুন GlassFish ইনস্টলেশনে এটি হলো স্বয়ংক্রিয়ভাবে তৈরি হওয়া স্ব-স্বাক্ষরিত সার্টিফিকেট, তাই DN আপনার কোম্পানির সাথে মিলবে না। বেশিরভাগ CA কেবল Common Name এবং SAN তালিকা যাচাই করে এবং অর্ডার ফর্মে বাকি DN ওভাররাইড করার সুযোগ দেয়, কিন্তু যদি আপনার এমন একটি CSR প্রয়োজন হয় যার DN-এ ইতিমধ্যেই আপনার আইনগত কোম্পানির তথ্য রয়েছে, তাহলে অপশন B ব্যবহার করুন।
অপশন B: ডিফল্ট s1as কী একটি নতুন কী দিয়ে প্রতিস্থাপন করুন
এই অপশনটি ব্যবহার করুন যখন আপনি কী সাইজ এবং DN-এর সম্পূর্ণ নিয়ন্ত্রণ চান, অথবা যখন আপনি ফ্যাক্টরি-জেনারেটেড কী পুনরায় ব্যবহার করতে চান না। প্রবাহটি হলো: ডিফল্ট s1as এন্ট্রি মুছে ফেলুন, একই alias-এর অধীনে একটি নতুন কী তৈরি করুন, তারপর CSR এক্সপোর্ট করুন। alias-কে s1as রাখলে পরে আপনাকে domain.xml স্পর্শ করতে হবে না।
ধাপ ১: keystore ব্যাকআপ নিন
কিছু মুছে ফেলার আগে, বর্তমান keystore-টি কপি করুন যাতে প্রয়োজনে আপনি ফিরে যেতে পারেন। ডোমেইনের config ডিরেক্টরি থেকে:
cp keystore.jks keystore.jks.bak
ধাপ ২: ডিফল্ট s1as এন্ট্রি মুছে ফেলুন
keytool -delete -alias s1as -keystore keystore.jks
প্রম্পট করা হলে keystore পাসওয়ার্ড দিন।
ধাপ ৩: একই alias-এর অধীনে একটি নতুন প্রাইভেট কী তৈরি করুন
s1as alias-এর অধীনে একটি নতুন 2048-বিট RSA কী তৈরি করুন এবং DN ইনলাইনে দিন যাতে কমান্ডটি নন-ইন্টারঅ্যাকটিভ থাকে:
keytool -genkeypair
-alias s1as
-keyalg RSA -keysize 2048
-keystore keystore.jks
-dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US"
-validity 825
ফ্ল্যাগগুলোর অর্থ কী:
- -alias s1as: ডিফল্ট GlassFish alias পুনরায় ব্যবহার করে যাতে domain.xml-এ কোনো পরিবর্তনের প্রয়োজন না হয়।
- -keyalg RSA -keysize 2048: একটি 2048-বিট RSA কী বর্তমান পাবলিক ন্যূনতম মান। আপনি যদি এমন নতুন কী রাখতে চান যা কয়েক বছর ধরে ব্যবহার করবেন, তাহলে 3072 বিট একটি যুক্তিসঙ্গত আপগ্রেড। বেশিরভাগ পাবলিক CA আরও ছোট, দ্রুততর কী-এর জন্য ECDSA (-keyalg EC -groupname secp256r1)-ও গ্রহণ করে।
- -keystore keystore.jks: ডিফল্ট GlassFish keystore। Eclipse GlassFish 7.1 এবং তার পরবর্তী সংস্করণে keystore.p12 দিয়ে প্রতিস্থাপন করুন। keytool বিদ্যমান keystore ফরম্যাট বজায় রাখে (পুরোনো ইনস্টলেশনে JKS, 7.1+ এ PKCS12); উভয়ই এখানে ঠিক আছে।
- -dname “CN=…”: CSR-এ লেখা Distinguished Name ফিল্ডগুলো। আপনার সঠিক, আইনগত কোম্পানির তথ্য ব্যবহার করুন:
- CN: আপনি যে সঠিক FQDN সুরক্ষিত করছেন, যেমন www.yourdomain.com, অথবা একটি wildcard যেমন *.yourdomain.com। ইন্টারঅ্যাকটিভ মোডে keytool-এর প্রম্পট শব্দচয়ন সত্ত্বেও কোনো ব্যক্তির নাম প্রবেশ করাবেন না।
- O: আপনার কোম্পানির সম্পূর্ণ আইনগত নাম।
- L: সম্পূর্ণ শহরের নাম (সংক্ষিপ্ত করবেন না)।
- ST: সম্পূর্ণ রাজ্য বা প্রদেশের নাম (দুই অক্ষরের কোড ব্যবহার করবেন না)।
- C: দুই অক্ষরের ISO দেশ কোড, যেমন US, GB, DE।
- OU (Organizational Unit): এই ফিল্ডটি আর পাবলিক CA-গুলো ইস্যু করে না। এটি DN থেকে বাদ দিন।
keytool keystore পাসওয়ার্ড এবং কী পাসওয়ার্ড চায়। একটি GlassFish ডোমেইনে, keystore পাসওয়ার্ড, কী পাসওয়ার্ড, এবং ডোমেইন master password অবশ্যই সবগুলো মিলতে হবে, অন্যথায় GlassFish স্টার্টআপে কী আনলক করতে পারবে না এবং HTTPS ব্যর্থ হবে। কী-পাসওয়ার্ড প্রম্পটে keystore পাসওয়ার্ড পুনরায় ব্যবহার করতে Enter চাপুন।
ধাপ ৪: SAN সহ CSR এক্সপোর্ট করুন
অপশন A-এর মতোই একই কমান্ড, আপনার নতুন কী-এর বিরুদ্ধে চালান:
keytool -certreq
-alias s1as
-keystore keystore.jks
-file glassfish.csr
-ext san=dns:yourdomain.com,dns:www.yourdomain.com
keystore পাসওয়ার্ড দিন। keytool বর্তমান ডিরেক্টরিতে glassfish.csr-এ CSR লেখে।
গুরুত্বপূর্ণ: alias-কে s1as রাখুন
GlassFish-এ keytool-এর সবচেয়ে সাধারণ ভুল হলো, কী তৈরি করার সময় বা স্বাক্ষরিত সার্টিফিকেট ইম্পোর্ট করার সময় কোথাও alias পরিবর্তন করা। দুটি ব্যর্থতার ধরন দেখা যায়:
- কী-তে ভুল alias। GlassFish-এর HTTPS লিসেনার domain.xml-এ s1as-এর সাথে সংযুক্ত। আপনি যদি ভিন্ন একটি alias-এর অধীনে কী তৈরি করেন, তাহলে GlassFish সেটি খুঁজে পাবে না এবং লিসেনার ডিফল্ট স্ব-স্বাক্ষরিত সার্টিফিকেটে ফিরে যাবে (অথবা শুরু হতে ব্যর্থ হবে)। যদি আপনি সত্যিই ভিন্ন একটি alias চান, তাহলে আপনাকে domain.xml-এ প্রতিটি s1as রেফারেন্স আপডেট করতে হবে যাতে তা মিলে যায়।
- ইম্পোর্টে ভুল alias। যখন CA আপনার স্বাক্ষরিত সার্টিফিকেট ফেরত দেয়, তখন আপনাকে সেটি প্রাইভেট কী ধারণকারী একই alias-এ ফিরে ইম্পোর্ট করতে হবে। একটি সম্পূর্ণ নতুন alias-এর অধীনে ইম্পোর্ট করলে সার্টিফিকেটটি কোনো প্রাইভেট কী সংযুক্ত ছাড়াই একটি স্বতন্ত্র ট্রাস্টেড এন্ট্রি হিসেবে সংরক্ষিত হয়, এবং TLS কাজ করবে না।
টার্মিনাল বন্ধ করার আগে এই তিনটি মান লক্ষ্য করুন:
- alias (ডিফল্ট s1as; এটি রাখুন)।
- keystore ফাইল পাথ, যেমন glassfish/domains/domain1/config/keystore.p12 (অথবা পুরোনো বিল্ডে keystore.jks)।
- keystore পাসওয়ার্ড (যা ডোমেইন master password-এর সমান হতে হবে)।
জমা দেওয়ার আগে CSR যাচাই করুন
CA সেগুলো যাচাই করার আগে DN-এর টাইপো বা অনুপস্থিত SAN ধরুন। keytool দিয়ে CSR প্রিন্ট করুন:
keytool -printcertreq -file glassfish.csr
অথবা, যদি OpenSSL ইনস্টল করা থাকে, তাহলে এর পরিবর্তে সেটি ব্যবহার করুন:
openssl req -noout -text -in glassfish.csr
আউটপুটে তিনটি বিষয় নিশ্চিত করুন: Subject-এ আপনার সঠিক DN দেখাচ্ছে, Subject Alternative Name-এ আপনার প্রয়োজনীয় প্রতিটি হোস্টনেম তালিকাভুক্ত আছে, এবং Public-Key সাইজ আপনি যা চেয়েছিলেন তার সাথে মিলছে (2048-বিট RSA, বা আপনি যা বেছে নিয়েছেন)। আপনি ব্রাউজারে একই যাচাই করার জন্য আমাদের CSR Decoder-এও CSR পেস্ট করতে পারেন।
আপনার সার্টিফিকেট অথরিটির কাছে CSR জমা দিন
যেকোনো টেক্সট এডিটরে glassfish.csr খুলুন। ফাইলটি প্লেইন টেক্সট, যা শুরু হয় —–BEGIN CERTIFICATE REQUEST—– দিয়ে এবং শেষ হয় —–END CERTIFICATE REQUEST—– দিয়ে। সম্পূর্ণ ব্লকটি কপি করুন, সেই হেডার এবং ফুটার লাইনগুলোসহ, এবং আপনার CA-এর সাথে চেকআউটের সময় CSR ফিল্ডে পেস্ট করুন। Windows-এ, সম্পূর্ণ টেক্সট নিতে Ctrl + A এরপর Ctrl + C ব্যবহার করুন; macOS-এ, Cmd + A এরপর Cmd + C ব্যবহার করুন।
CA আপনার রিকোয়েস্ট যাচাই করে সার্টিফিকেট ইস্যু করার পর, কীভাবে GlassFish-এ আপনার SSL সার্টিফিকেট ইনস্টল করবেন সেই অংশে এগিয়ে যান। আপনি CA চেইনটি ট্রাস্টেড হিসেবে ইম্পোর্ট করবেন, তারপর স্বাক্ষরিত সার্টিফিকেটটি একই keystore ফাইলে (keystore.p12, 7.1+ এ, keystore.jks, পুরোনো বিল্ডে) s1as alias-এ ফিরে ইম্পোর্ট করবেন, এবং শেষে HTTPS লিসেনারকে সেই alias-এর দিকে নির্দেশ করবেন।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


