এই গাইডে দেখানো হয়েছে OpenSSL কমান্ড লাইন ব্যবহার করে Red Hat Enterprise Linux-এ কীভাবে একটি CSR (Certificate Signing Request) তৈরি করবেন। এই প্রক্রিয়ায় দুটি ফাইল তৈরি হয়:
- একটি প্রাইভেট কী, যা আপনার সার্ভারে থেকে যায় এবং কখনো শেয়ার করা হয় না।
- একটি CSR, যা আপনি সার্টিফিকেট অর্ডার করার সময় আপনার Certificate Authority (CA)-কে পাঠান।
এতে দুটি পদ্ধতি আলোচনা করা হয়েছে: আধুনিক OpenSSL-এর জন্য একটি একক-কমান্ড পদ্ধতি এবং পুরনো OpenSSL সংস্করণের জন্য একটি কনফিগ-ফাইল পদ্ধতি, যেগুলো ইনলাইন এক্সটেনশন সমর্থন করে না। উভয় পদ্ধতিতেই SHA-256 দিয়ে সাইন করা একটি SAN-compliant CSR তৈরি হয়, যা পাবলিক CA-গুলোর প্রয়োজনীয়তা পূরণ করে।
শুরু করার আগে: আপনার OpenSSL সংস্করণ পরীক্ষা করুন
প্রতিটি সমর্থিত RHEL রিলিজে OpenSSL ডিফল্টভাবে অন্তর্ভুক্ত থাকে। এটি উপস্থিত আছে কিনা তা নিশ্চিত করুন এবং সংস্করণ পরীক্ষা করুন, কারণ সংস্করণের উপর নির্ভর করে আপনি নিচের কোন পদ্ধতিটি ব্যবহার করতে পারবেন:
openssl version
বর্তমান প্রতিটি Red Hat রিলিজে যা থাকে:
- RHEL 10 (2025 সালে প্রকাশিত, বর্তমান মেজর সংস্করণ): OpenSSL 3.x
- RHEL 9: OpenSSL 3.x
- RHEL 8: OpenSSL 1.1.1
- RHEL 7: OpenSSL 1.0.2 (RHEL 7 2024 সালে এর maintenance support-এর মেয়াদ শেষ হয়েছে; সম্ভব হলে এই ওয়ার্কলোডগুলো একটি সমর্থিত রিলিজে সরিয়ে নিন)
OpenSSL 1.1.1 এবং 3.x উভয়ই একক-কমান্ড পদ্ধতিতে ব্যবহৃত ইনলাইন এক্সটেনশন ফ্ল্যাগ সমর্থন করে, তাই RHEL 8, 9, এবং 10-এ আপনি নিচের অপশন A ব্যবহার করতে পারেন। যদি openssl version 1.0.2 বা তার পুরনো সংস্করণ দেখায় (RHEL 7), তাহলে অপশন B-এর কনফিগ-ফাইল পদ্ধতি ব্যবহার করুন।
যদি কোনো কারণে OpenSSL না থাকে, তাহলে আপনার রিলিজের প্যাকেজ ম্যানেজার দিয়ে এটি ইনস্টল করুন:
# RHEL 8, 9, and 10
sudo dnf install openssl
# RHEL 7
sudo yum install openssl
RHEL 8 এবং তার পরবর্তী সংস্করণে, yum হলো dnf-এর একটি কম্প্যাটিবিলিটি অ্যালিয়াস, তাই এই সংস্করণগুলোতে যেকোনো কমান্ডই কাজ করবে।
অপশন A: একটি কমান্ড (OpenSSL 1.1.1 এবং 3.x)
RHEL 8, 9, এবং 10-এ এটি সবচেয়ে দ্রুততম পদ্ধতি। এটি প্রথমে প্রাইভেট কী তৈরি করে, তারপর ইনলাইনভাবে যুক্ত Subject Alternative Names (SAN)-সহ CSR তৈরি করে।
ধাপ 1: প্রাইভেট কী তৈরি করুন
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key
এটি বর্তমান ডিরেক্টরিতে example.com.key নামে একটি 2048-বিট RSA প্রাইভেট কী তৈরি করে। 2048-বিট RSA হলো পাবলিক CA-গুলোর গ্রহণযোগ্য সর্বনিম্ন মান; এর পরিবর্তে একটি আধুনিক ইলিপ্টিক-কার্ভ কী তৈরি করতে, অ্যালগরিদম অপশনগুলো -algorithm EC -pkeyopt ec_paramgen_curve:P-256 দিয়ে প্রতিস্থাপন করুন। এই ফাইলটি গোপন রাখুন: এটি আপনার সার্ভারে থাকে এবং কখনো CA-কে পাঠানো হয় না।
ধাপ 2: SAN-সহ CSR তৈরি করুন
নিচের কমান্ডটি চালান, সাবজেক্ট ফিল্ড এবং ডোমেইন নেম আপনার নিজেরটির সাথে মিলিয়ে সামঞ্জস্য করুন:
openssl req -new -sha256 -key example.com.key -out example.com.csr
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=example.com"
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"
সর্বত্র example.com-এর জায়গায় আপনার প্রকৃত ডোমেইন লিখুন এবং সাবজেক্ট ফিল্ডগুলো আপনার তথ্য অনুযায়ী সেট করুন:
- C: দুই অক্ষরের দেশের কোড (উদাহরণস্বরূপ, US)।
- ST: রাজ্য বা প্রদেশের পুরো নাম।
- L: শহর বা লোকালিটি।
- O: প্রতিষ্ঠানের আইনগত নাম (একক-ডোমেইন DV সার্টিফিকেটের জন্য এটি বাদ দেওয়া যেতে পারে)।
- CN: প্রধান fully qualified domain name, উদাহরণস্বরূপ www.example.com।
subjectAltName ভ্যালুতে সার্টিফিকেটকে যে প্রতিটি হোস্ট নেম কভার করতে হবে তা তালিকাভুক্ত করুন। আধুনিক ব্রাউজারগুলো Common Name নয়, বরং SAN তালিকার বিপরীতে যাচাই করে, তাই প্রধান ডোমেইনসহ প্রতিটি নাম সেখানে অন্তর্ভুক্ত করুন। কমান্ডটি CSR-কে example.com.csr-এ লিখে দেয়।
অপশন B: কনফিগ ফাইল পদ্ধতি (পুরনো OpenSSL)
যদি openssl version এমন একটি বিল্ড দেখায় যা -addext ফ্ল্যাগ সমর্থন করে না (OpenSSL 1.0.2 এবং তার পুরনো সংস্করণ, যেমন RHEL 7-এ), তাহলে এর পরিবর্তে একটি ছোট কনফিগারেশন ফাইলে SAN সংজ্ঞায়িত করুন।
ধাপ 1: একটি কনফিগ ফাইল তৈরি করুন (san.cnf)
একটি টেক্সট এডিটর দিয়ে san.cnf নামে একটি ফাইল তৈরি করুন এবং নিচেরটি পেস্ট করুন, আপনার ডোমেইন এবং প্রতিষ্ঠানের জন্য মানগুলো সম্পাদনা করে:
[ req ]
default_bits = 2048
prompt = no
distinguished_name = dn
req_extensions = req_ext
[ dn ]
C = US
ST = California
L = San Jose
O = Your Company LLC
CN = example.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com
নম্বরিং চালিয়ে গিয়ে আরও হোস্ট নেম যোগ করুন: DNS.3, DNS.4, ইত্যাদি।
ধাপ 2: কী এবং CSR তৈরি করুন
প্রাইভেট কী তৈরি করুন:
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key
তারপর কনফিগ ফাইল ব্যবহার করে CSR তৈরি করুন:
openssl req -new -sha256 -key example.com.key -out example.com.csr -config san.cnf
CSR যাচাই করুন
জমা দেওয়ার আগে, নিশ্চিত করুন যে CSR-এ সঠিক বিস্তারিত তথ্য এবং একটি বৈধ স্বাক্ষর রয়েছে। এই কমান্ডটি সাবজেক্ট, SAN তালিকা, কী সাইজ প্রিন্ট করে এবং রিকোয়েস্টের self-signature যাচাই করে:
openssl req -noout -text -verify -in example.com.csr
পরীক্ষা করুন যে Subject লাইন এবং X509v3 Subject Alternative Name এন্ট্রিগুলোতে আপনার প্রত্যাশিত প্রতিটি ডোমেইন তালিকাভুক্ত আছে, পাবলিক কী কমপক্ষে 2048-বিট RSA (অথবা একটি P-256 ইলিপ্টিক-কার্ভ কী), এবং সিগনেচার অ্যালগরিদম SHA-256। certificate request self-signature verify OK লেখা একটি লাইন (পুরনো বিল্ডে verify OK দেখায়) মানে হলো CSR এবং প্রাইভেট কী মিলে গেছে। আপনি যদি ব্রাউজার পছন্দ করেন, তাহলে একই বিস্তারিত তথ্য পর্যালোচনা করতে আমাদের অনলাইন CSR ডিকোডার-এ CSR পেস্ট করুন।
CSR জমা দিন
একটি টেক্সট এডিটরে example.com.csr ফাইলটি খুলুন এবং এর সম্পূর্ণ কন্টেন্ট কপি করুন, যার মধ্যে -----BEGIN CERTIFICATE REQUEST----- এবং -----END CERTIFICATE REQUEST----- মার্কার লাইনও অন্তর্ভুক্ত থাকবে (প্রতিটি মার্কারের উভয় পাশে পাঁচটি হাইফেন থাকে)। আপনার SSL ভেন্ডরের কাছ থেকে সার্টিফিকেট অর্ডার করার সময় সম্পূর্ণ ব্লকটি অর্ডার ফর্মে পেস্ট করুন।
প্রাইভেট কী, example.com.key, সার্ভারেই রাখুন। এটি CA-কে পাঠাবেন না বা কোথাও পেস্ট করবেন না: এটি জোড়ার গোপন অংশ এবং কখনো আপনার নিয়ন্ত্রণের বাইরে যাওয়া উচিত নয়। CA যখন CSR যাচাই করে সার্টিফিকেট ইস্যু করবে, তখন এটি ইনস্টল করতে আমাদের Red Hat Linux SSL ইনস্টলেশন নির্দেশনা অনুসরণ করুন।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
আপনি যে কমান্ড চালিয়েছেন সেই ডিরেক্টরিতে -out অপশনে যে ফাইলের নাম দিয়েছেন (উদাহরণস্বরূপ, example.com.key) সেখানে প্রাইভেট কী লেখা হয়। এটি স্থানীয়ভাবে তৈরি হয় এবং কখনো CSR-এ অন্তর্ভুক্ত হয় না। এটি নিরাপদ কোথাও ব্যাকআপ রাখুন এবং এর অনুমতি সীমিত করুন, কারণ CA যে সার্টিফিকেট ইস্যু করে তা ইনস্টল করতে আপনার এই ঠিক কী-টিই প্রয়োজন হবে।
দুটোই গ্রহণযোগ্য। 2048-বিট RSA হলো ব্যাপকভাবে সামঞ্জস্যপূর্ণ ডিফল্ট এবং পাবলিক CA-গুলোর অনুমোদিত সর্বনিম্ন মান। একটি ইলিপ্টিক-কার্ভ কী (ECDSA P-256) সমতুল্য নিরাপত্তা প্রদান করার পাশাপাশি ছোট এবং দ্রুততর হয়; কী অপশনগুলো -algorithm EC -pkeyopt ec_paramgen_curve:P-256 দিয়ে প্রতিস্থাপন করে একটি তৈরি করুন। যেভাবেই হোক, CSR অবশ্যই SHA-256 দিয়ে সাইন করা থাকতে হবে, যা উপরের কমান্ডগুলো ইতিমধ্যেই করে।
-addext ফ্ল্যাগটি OpenSSL 1.1.1-এ যোগ করা হয়েছিল। আপনি যদি একটি পুরনো বিল্ডে থাকেন (উদাহরণস্বরূপ, RHEL 7-এ OpenSSL 1.0.2), তাহলে অপশন B-এর কনফিগ-ফাইল পদ্ধতি ব্যবহার করুন, যা কমান্ড লাইনের পরিবর্তে একটি san.cnf ফাইলে Subject Alternative Names সংজ্ঞায়িত করে।
সার্ভারে openssl req -noout -text -verify -in example.com.csr চালান। এটি সাবজেক্ট, সম্পূর্ণ SAN তালিকা, কী-এর ধরন ও সাইজ, এবং সিগনেচার অ্যালগরিদম প্রিন্ট করে, এবং নিশ্চিত করে যে CSR তার প্রাইভেট কী-এর সাথে মিলে যায়। CSR অর্ডার ফর্মে পেস্ট করার আগে সেই ফিল্ডগুলো পর্যালোচনা করুন।
-----BEGIN CERTIFICATE REQUEST----- থেকে শুরু করে -----END CERTIFICATE REQUEST----- পর্যন্ত সম্পূর্ণ ব্লকটি পেস্ট করুন, কোনো অক্ষর বাদ না দিয়ে। উভয় মার্কার লাইনেই উভয় পাশে পাঁচটি হাইফেন থাকে। প্রাইভেট কী পেস্ট করবেন না।
হ্যাঁ। AlmaLinux, Rocky Linux, এবং CentOS Stream মিলিত RHEL রিলিজের সাথে বাইনারি-সামঞ্জস্যপূর্ণ এবং একই OpenSSL সরবরাহ করে, তাই কমান্ডগুলো অভিন্ন। প্রয়োজনে আমাদের কাছে CentOS-এ কীভাবে CSR তৈরি করবেন সে বিষয়ে একটি নিবেদিত টিউটোরিয়ালও রয়েছে।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10

