এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে Webmin-এ একটি CSR (Certificate Signing Request) তৈরি করবেন। Webmin হলো Linux সার্ভারের জন্য একটি ব্রাউজার-ভিত্তিক কন্ট্রোল প্যানেল, তাই CSR তৈরি করার দুটি ব্যবহারিক উপায় রয়েছে আপনার কাছে: Webmin-এর বিল্ট-ইন SSL মডিউলের মাধ্যমে (Webmin প্যানেলের নিজের জন্য বা কোনো Apache ভার্চুয়াল হোস্টের জন্য একটি গ্রাফিকাল ফর্ম) অথবা Webmin-এর বিল্ট-ইন টার্মিনালের মাধ্যমে OpenSSL কমান্ড লাইন ব্যবহার করে। OpenSSL পদ্ধতিটি সবচেয়ে নমনীয় এবং এটি একটি কী ও CSR তৈরি করে, যা আপনি যেকোনো ওয়েব সার্ভারের (Apache, Nginx, Lighttpd, অথবা Webmin যা কিছু পরিচালনা করে তার) সাথে ব্যবহার করতে পারবেন।
নিচের ধাপগুলো ধরে নেওয়া হয়েছে যে আপনি আধুনিক Webmin 2.x এবং OpenSSL 3.x ব্যবহার করছেন, যা 2026 সালে প্রতিটি সমর্থিত Linux ডিস্ট্রিবিউশনে (Ubuntu 22.04 / 24.04 / 26.04, Debian 12 এবং 13, RHEL 9 এবং 10, Rocky 9 এবং 10, AlmaLinux 9 এবং 10, openSUSE Leap 15.6 এবং Tumbleweed) বর্তমান সংস্করণ। আউটপুট হলো একটি স্ট্যান্ডার্ড PEM-এনকোডেড CSR যা SHA-256 দিয়ে সাইন করা, যা যেকোনো পাবলিক Certificate Authority গ্রহণ করে।
ধাপ ১: Webmin-এ লগ ইন করুন
একটি ব্রাউজারে আপনার সার্ভারের URL-এ পোর্ট 10000-এ Webmin খুলুন:
https://yourwebsite.com:10000
yourwebsite.com-এর জায়গায় আপনার সার্ভারের হোস্টনেম বা IP ঠিকানা দিন। পোর্ট 10000 হলো ডিফল্ট Webmin পোর্ট। root অ্যাকাউন্ট দিয়ে বা SSL পরিচালনার অনুমতি রয়েছে এমন একজন Webmin ব্যবহারকারী দিয়ে সাইন ইন করুন।
ধাপ ২: Webmin টার্মিনাল খুলুন
Webmin 2.x-এ একটি বিল্ট-ইন টার্মিনাল রয়েছে, যা আপনি আলাদা SSH সেশন না খুলেই ব্যবহার করতে পারেন। বাম দিকের প্যানেলে, Refresh Modules লিংকের ঠিক নিচে, Terminal আইকনে (বাম থেকে দ্বিতীয় আইকন) ক্লিক করুন, অথবা এটি খুলতে Alt + K চাপুন। একটি শেল প্রম্পট প্রদর্শিত হবে, যা আপনি যে ব্যবহারকারী হিসেবে সাইন ইন করেছেন সেভাবেই চলবে।
যদি আপনি নিজের মেশিন থেকে সরাসরি SSH সংযোগ পছন্দ করেন, তাহলে একই সার্ভারে সংযোগ করুন এবং পরবর্তী ধাপের কমান্ডটি সেখানে চালান। ফলাফল একই হবে।
ধাপ ৩: OpenSSL দিয়ে প্রাইভেট কী ও CSR তৈরি করুন
টার্মিনালে, নিচের কমান্ডটি চালান। এটি একটি ধাপে একটি 2048-বিট RSA কী এবং একটি সংশ্লিষ্ট CSR তৈরি করে, যেখানে সাবজেক্ট ও Subject Alternative Names (SAN) ইনলাইনে সরবরাহ করা হয়েছে, যাতে OpenSSL ইন্টারঅ্যাক্টিভ প্রশ্ন জিজ্ঞাসা করার জন্য থেমে না যায়:
sudo openssl req -new -newkey rsa:2048 -noenc
-keyout /etc/ssl/private/yourwebsite.com.key
-out /etc/ssl/private/yourwebsite.com.csr
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com"
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"
Debian এবং Ubuntu-তে, /etc/ssl/private/ ডিরেক্টরিটি ইতিমধ্যেই থাকে। RHEL, Rocky, AlmaLinux, এবং Fedora-তে, কীগুলোর জন্য প্রথাগত রীতি হলো /etc/pki/tls/private/ এবং CSR-এর জন্য /etc/pki/tls/certs/। এমন পাথ বেছে নিন যা আপনার ওয়েব সার্ভার পড়তে পারে, অথবা ফাইলগুলো আপনার হোম ডিরেক্টরিতে সংরক্ষণ করে পরে সরিয়ে নিন। যদি টার্গেট ডিরেক্টরিটি না থাকে, তাহলে প্রথমে sudo mkdir -p /etc/ssl/private দিয়ে এটি তৈরি করুন।
কমান্ডের প্রতিটি অংশ কী করে:
- -newkey rsa:2048 একটি নতুন 2048-বিট RSA কী তৈরি করে। পাবলিক সার্টিফিকেটের জন্য 2048-বিট হলো বর্তমান ন্যূনতম মান। বড় কী-এর জন্য rsa:4096 ব্যবহার করুন, অথবা ECDSA-তে স্যুইচ করুন (নিচে দেখুন)।
- -noenc প্রাইভেট কীটি অ্যানএনক্রিপ্টেড রাখে, যাতে ওয়েব সার্ভার স্টার্টআপের সময় কোনো পাসফ্রেজ প্রম্পট ছাড়াই এটি পড়তে পারে। (OpenSSL 1.x-এ সমতুল্য ফ্ল্যাগটি হলো -nodes; উভয়ই OpenSSL 3.x-এ কাজ করে।)
- -keyout এবং -out প্রাইভেট কী ফাইল ও CSR ফাইলের নাম নির্ধারণ করে।
- -subj সার্টিফিকেটের সাবজেক্ট ইনলাইনে সরবরাহ করে। উদাহরণ মানগুলোর জায়গায় আপনার প্রকৃত তথ্য দিন:
- C: আপনার প্রতিষ্ঠান আইনগতভাবে যে দেশে নিবন্ধিত, তার দুই অক্ষরের কান্ট্রি কোড (যেমন, US)।
- ST: সম্পূর্ণ রাজ্য বা প্রদেশের নাম (যেমন, California), সংক্ষিপ্ত রূপ ছাড়া।
- L: সম্পূর্ণ শহর বা নগরের নাম (যেমন, San Jose)।
- O: আইনি প্রতিষ্ঠানের নাম। Domain Validation (DV) সার্টিফিকেটের জন্য, এটি বাদ দিন অথবা আপনার ডোমেইনে সেট করুন।
- CN: আপনি যে সাইটটি সুরক্ষিত করতে চান তার Fully Qualified Domain Name (FQDN) (যেমন, yourwebsite.com)।
- -addext “subjectAltName=…” সার্টিফিকেটটি যে প্রতিটি হোস্টনেম কভার করবে তার তালিকা দেয়। পাবলিক CA-গুলো SAN তালিকার বিপরীতে ভ্যালিডেট করে, তাই এখানে Common Name-ও অন্তর্ভুক্ত করুন। ওয়াইল্ডকার্ডের জন্য, ওয়াইল্ডকার্ড ও এপেক্স উভয়ই অন্তর্ভুক্ত করুন: DNS:*.yourwebsite.com,DNS:yourwebsite.com। ওয়াইল্ডকার্ডগুলো এক স্তরের সাবডোমেইন কভার করে এবং এককভাবে এপেক্সের সাথে মেলে না।
যদি আপনি একটি ECDSA কী পছন্দ করেন (ছোট ও দ্রুত, এবং P-256 ব্যাপকভাবে সমর্থিত), তাহলে এই ভ্যারিয়েন্টটি ব্যবহার করুন:
sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -noenc
-keyout /etc/ssl/private/yourwebsite.com.key
-out /etc/ssl/private/yourwebsite.com.csr
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com"
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"
প্রতিটি লাইনের শেষে থাকা ব্যাকস্ল্যাশটি একটি শেল লাইন কন্টিনিউয়েশন, যাতে পড়ার সুবিধার্থে কমান্ডটি একাধিক লাইনে বিভক্ত হয়ে থাকলেও এটি একটি যৌক্তিক নির্দেশনা হিসেবে থাকে। যদি আপনার টার্মিনাল মাল্টি-লাইন ফর্ম ভালোভাবে হ্যান্ডেল না করে, তাহলে পুরো কমান্ডটি একটি একক লাইনে পেস্ট করুন।
ধাপ ৪: প্রাইভেট কী সুরক্ষিত করুন
দুটি ফাইলই তৈরি হয়েছে কিনা তা নিশ্চিত করতে ডিরেক্টরির তালিকা দেখুন:
sudo ls -l /etc/ssl/private/yourwebsite.com.*
আপনি দুটি নতুন ফাইল দেখতে পাবেন:
- yourwebsite.com.key: প্রাইভেট কী। এটি অবশ্যই সার্ভারে থাকতে হবে, কখনও Certificate Authority-কে পাঠানো যাবে না, এবং কখনও ইমেইল করা বা কোনো ফর্মে পেস্ট করা যাবে না। যার কাছে এই কী থাকবে, সে আপনার সাইটের ছদ্মবেশ ধারণ করতে পারবে।
- yourwebsite.com.csr: Certificate Signing Request। এটিই একমাত্র ফাইল যা আপনি SSL প্রোভাইডারের কাছে জমা দেবেন।
প্রাইভেট কী-এর অনুমতি সীমাবদ্ধ করুন যাতে শুধু root এটি পড়তে পারে:
sudo chmod 600 /etc/ssl/private/yourwebsite.com.key
SELinux সক্রিয় থাকা ডিস্ট্রিবিউশনগুলোতে (RHEL, Rocky, AlmaLinux, Fedora), কী-টিকে তার চূড়ান্ত অবস্থানে স্থানান্তরের পর সঠিক SELinux কনটেক্সট পুনরায় প্রয়োগ করুন, উদাহরণস্বরূপ sudo restorecon -Rv /etc/pki/tls/।
ধাপ ৫: CSR যাচাই করুন (ঐচ্ছিক তবে সুপারিশকৃত)
CSR জমা দেওয়ার আগে, এটিতে সঠিক সাবজেক্ট ও SAN রয়েছে কিনা এবং এর স্বাক্ষর বৈধ কিনা তা নিশ্চিত করুন:
openssl req -noout -text -verify -in /etc/ssl/private/yourwebsite.com.csr
নিশ্চিত করুন যে Subject লাইনটি আপনার তথ্যের সাথে মিলছে, X509v3 Subject Alternative Name-এ আপনার প্রত্যাশিত প্রতিটি হোস্টনেম তালিকাভুক্ত আছে, এবং স্বাক্ষর যাচাই verify OK প্রদর্শন করছে। স্বাক্ষর অ্যালগরিদমে sha256WithRSAEncryption (অথবা ECDSA কী-এর জন্য ecdsa-with-SHA256) দেখানো উচিত। যদি আপনি কমান্ড লাইন ব্যবহার করতে না চান, তাহলে একই ফিল্ডগুলো ব্রাউজারে পড়তে আমাদের অনলাইন CSR ডিকোডার-এ CSR টেক্সট পেস্ট করুন।
ধাপ ৬: CSR কপি করুন ও জমা দিন
CSR প্রিন্ট করুন যাতে আপনি এটি কপি করতে পারেন:
sudo cat /etc/ssl/private/yourwebsite.com.csr
আপনি এই ধরনের একটি টেক্সট ব্লক দেখতে পাবেন:
-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----
সম্পূর্ণ ব্লকটি কপি করুন, —–BEGIN CERTIFICATE REQUEST—– এবং —–END CERTIFICATE REQUEST—– লাইনসহ (প্রতিটি মার্কারের উভয় পাশে পাঁচটি করে হাইফেন রয়েছে)। আপনার SSL সার্টিফিকেট কেনার সময় অর্ডার ফর্মে এটি পেস্ট করুন, এবং সংশ্লিষ্ট প্রাইভেট কী-টি সার্ভারে রেখে দিন।
Webmin-এর গ্রাফিকাল মডিউলের মাধ্যমে CSR তৈরি করুন
যদি আপনি কমান্ড লাইন এড়িয়ে যেতে চান, তাহলে Webmin-এ দুটি গ্রাফিকাল ফর্ম রয়েছে যা আপনার জন্য CSR তৈরি করে। সার্টিফিকেটটি কীসের জন্য তার সাথে মিলে এমনটি বেছে নিন।
একটি Apache ভার্চুয়াল হোস্টের জন্য (আপনার ওয়েবসাইট)
- Servers > Apache Webserver-এ যান।
- Global Configuration ট্যাব খুলুন, Configure Apache Modules-এ ক্লিক করুন, ssl মডিউলটি টিক দিন, এবং যদি এটি ইতিমধ্যেই সক্রিয় না থাকে তাহলে Enable Selected Modules-এ ক্লিক করুন।
- Existing virtual hosts ট্যাবে, পোর্ট 443-এর ভার্চুয়াল হোস্টটি খুলুন (অথবা একটি তৈরি করুন) এর globe আইকনে ক্লিক করে।
- Virtual Server Options পেজে, SSL Options নির্বাচন করুন, তারপর Create signing request-এ ক্লিক করুন।
- ফর্মটি পূরণ করুন (দেশ, রাজ্য, শহর, প্রতিষ্ঠান, কমন নেম, ইমেইল, কী সাইজ 2048 বা তার বেশি, এবং যেকোনো Subject Alternative Names), Webmin কোথায় .csr ও .key ফাইল লিখবে তা বেছে নিন, এবং Create Now-এ ক্লিক করুন।
আপনার নির্দিষ্ট করা পাথে দুটি ফাইল প্রদর্শিত হবে। আপনার অর্ডারের জন্য .csr ব্যবহার করুন এবং .key-টি সার্ভারে রাখুন।
Webmin প্যানেলের নিজের জন্য (পোর্ট 10000)
যদি আপনার শুধু Webmin লগইন ইন্টারফেসের জন্য একটি সার্টিফিকেট প্রয়োজন হয়, কোনো ওয়েবসাইটের জন্য নয়, তাহলে Webmin কনফিগারেশন মডিউল থেকে CSR তৈরি করুন:
- Webmin > Webmin Configuration > SSL Encryption-এ যান।
- Create Signing Request ট্যাব খুলুন।
- হোস্ট নেম (যে পাবলিক নামে আপনি Webmin-এ পৌঁছান), দেশ, রাজ্য, শহর, প্রতিষ্ঠান, ইমেইল, এবং কী সাইজ পূরণ করুন, তারপর Create-এ ক্লিক করুন।
Webmin অনুরোধ ও সংশ্লিষ্ট কী /etc/webmin/-এর অধীনে লেখে। CA ইস্যুকৃত সার্টিফিকেট ফেরত পাঠানোর পর, একই SSL Encryption পেজ থেকে এটি ইনস্টল করুন যাতে এটি ডিফল্ট /etc/webmin/miniserv.pem ফাইলটির স্থান নেয়।
সার্টিফিকেট পাওয়ার পর
Certificate Authority আপনার CSR যাচাই করে সার্টিফিকেট ইস্যু করার পর, এটি সার্ভারে ইনস্টল করুন। সঠিক ধাপগুলো নির্ভর করে সার্টিফিকেটটি কোন সার্ভিসের জন্য তার উপর:
- Webmin-এ SSL সার্টিফিকেট ইনস্টল করুন (Webmin-এর মাধ্যমে Apache)।
- Apache-এ সরাসরি SSL সার্টিফিকেট ইনস্টল করুন।
- যদি আপনি Nginx দিয়ে সাইট পরিচালনা করেন তাহলে Nginx-এ SSL সার্টিফিকেট ইনস্টল করুন।
যদি আপনি আপনার ব্রাউজারে চলা একটি সম্পূর্ণ গ্রাফিকাল ওয়ার্কফ্লো পছন্দ করেন, তাহলে আপনি আমাদের অনলাইন CSR জেনারেটর দিয়েও CSR তৈরি করতে পারেন। এটি আপনার ব্রাউজারে প্রাইভেট কী তৈরি করে, তাই কী-টি নিজে সংরক্ষণ করুন এবং ইনস্টলেশন সম্পূর্ণ করার আগে এটি সার্ভারে স্থানান্তর করুন।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
আপনি যেখানে নির্দেশ দেবেন, সেখানেই। OpenSSL কমান্ডের ক্ষেত্রে, ফাইলগুলো আপনি -keyout এবং -out দিয়ে যে পাথ দেবেন সেখানে লেখা হয়। Apache মডিউলের Create signing request ফর্মে, আপনি ফর্মেই আউটপুট পাথ বেছে নেন। Webmin > Webmin Configuration > SSL Encryption-এর ক্ষেত্রে, Webmin এগুলো /etc/webmin/-এর অধীনে লেখে। Debian ও Ubuntu-তে, কী-এর প্রথাগত স্থান হলো /etc/ssl/private/; RHEL, Rocky, AlmaLinux, এবং Fedora-তে এটি /etc/pki/tls/private/।
দুটোই কাজ করে। Webmin-এর বিল্ট-ইন টার্মিনাল (বাম দিকের প্যানেলের আইকন, অথবা Alt + K) সুবিধাজনক কারণ আপনি ইতিমধ্যেই সাইন ইন করা আছেন, তবে একটি সাধারণ SSH সেশনে একই OpenSSL কমান্ড চালালে একই ধরনের CSR ও কী তৈরি হয়। আপনার কাছে যেটি সহজ মনে হয় সেটি ব্যবহার করুন।
এগুলো একই কাজ করে: OpenSSL-কে বলে যে ডিস্কে প্রাইভেট কী অ্যানএনক্রিপ্টেড রাখতে, যাতে ওয়েব সার্ভার স্টার্টআপের সময় কোনো পাসফ্রেজ প্রম্পট ছাড়াই এটি পড়তে পারে। -nodes হলো ঐতিহাসিক নাম এবং এটি এখনও OpenSSL 3.x-এ কাজ করে। -noenc হলো OpenSSL 3.0-এ প্রবর্তিত নতুন উপনাম এবং ভবিষ্যতে এটিই পছন্দনীয় বানান। আপনার অভ্যাস অনুযায়ী যেটি পছন্দ সেটি ব্যবহার করুন।
হ্যাঁ। CSR হলো PKCS #10 দ্বারা সংজ্ঞায়িত একটি স্ট্যান্ডার্ড PEM-এনকোডেড অনুরোধ, এবং যেকোনো CA এটি সাইন করতে পারে, এটি কোথায় তৈরি হয়েছে তা বিবেচনা না করেই। Webmin-এর টার্মিনালে, Apache মডিউলের Create signing request ফর্মের মাধ্যমে, অথবা আমাদের অনলাইন CSR জেনারেটর দিয়ে আপনি যে CSR তৈরি করেন, সবগুলোই একই ধরনের ফাইল তৈরি করে। গুরুত্বপূর্ণ বিষয় হলো, একই সময়ে তৈরি হওয়া প্রাইভেট কী-টি যেন সেই সার্ভারেই থাকে যেখানে আপনি সার্টিফিকেট ইনস্টল করার পরিকল্পনা করছেন।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


