bg-tutorials

Apache-এ কীভাবে CSR জেনারেট করবেন

এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে Apache-এ CSR তৈরি করবেন OpenSSL কমান্ড লাইন ব্যবহার করে, একই সার্ভারে যেখানে Apache HTTP Server চলছে। আপনি একটি কমান্ডে দুটি ফাইল তৈরি করবেন: একটি নতুন প্রাইভেট কী এবং সেটির সাথে মিলে যাওয়া CSR (Certificate Signing Request), যা আপনি আপনার Certificate Authority-এর কাছে জমা দেবেন।

নিচের ধাপগুলো Apache হোস্ট করে এমন প্রতিটি আধুনিক Linux ডিস্ট্রিবিউশনে কাজ করে (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), কারণ প্রতিটিতেই OpenSSL 1.1.1 বা OpenSSL 3.x আগে থেকেই থাকে। উভয় সংস্করণই ডিফল্টভাবে অনুরোধটি SHA-256 দিয়ে সাইন করে, তাই আপনাকে আলাদা করে ডাইজেস্ট ফ্ল্যাগ যোগ করতে হবে না। একই কমান্ড FreeBSD এবং Apache সহ macOS-এও কাজ করে।

ধাপ ১: আপনার Apache সার্ভারে সংযুক্ত হোন

macOS বা Linux-এ Terminal খুলুন, অথবা Windows-এ PowerShell বা Windows Terminal খুলুন, এবং SSH-এর মাধ্যমে সার্ভারে সংযুক্ত হন। ব্যবহারকারীর নাম এবং হোস্ট আপনার নিজের দিয়ে প্রতিস্থাপন করুন:

ssh your-user@your-apache-server

যে সার্ভারে সার্টিফিকেট হোস্ট করা হবে, সেই একই সার্ভারে CSR তৈরি করুন। প্রাইভেট কী CSR-এর পাশাপাশি তৈরি হয় এবং সেই সার্ভারেই থাকতে হবে, তাই আপনার ল্যাপটপে কমান্ডটি চালিয়ে পরে কী নিয়ে ইতিউতি করলে মূল উদ্দেশ্যই ব্যর্থ হয়ে যায়। আপনি চাইলে একটি আলাদা ডিরেক্টরিতে কাজটি করতে পারেন, যা পরে আবার খুঁজে পাওয়া সহজ হবে, উদাহরণস্বরূপ:

sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain

ধাপ ২: প্রাইভেট কী এবং CSR তৈরি করুন

যদি আপনি ইতিমধ্যে অন্য কোনো টুল দিয়ে আপনার CSR তৈরি করে থাকেন, তাহলে Apache-এ সার্টিফিকেট ইনস্টল করা অংশে চলে যান।

নিচের OpenSSL কমান্ডটি চালান। এটি একই ধাপে একটি 2048-বিট RSA কী এবং একটি CSR তৈরি করে, যেখানে সাবজেক্ট এবং Subject Alternative Names (SAN) সরাসরি কমান্ডের সাথেই দেওয়া থাকে, ফলে OpenSSL কোনো প্রশ্ন জিজ্ঞাসা করার জন্য থামে না:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

প্রতিটি অংশ যা করে:

  • -newkey rsa:2048 একটি নতুন 2048-বিট RSA কী তৈরি করে। পাবলিক সার্টিফিকেটের জন্য বর্তমানে ন্যূনতম মান 2048-বিট; আপনি চাইলে বড় কী-এর জন্য rsa:4096 ব্যবহার করতে পারেন, অথবা ECDSA-তে স্যুইচ করতে পারেন (নিচে দেখুন)।
  • -nodes প্রাইভেট কী-কে এনক্রিপ্ট না করে রাখে, যাতে Apache স্টার্টআপের সময় কোনো পাসফ্রেজ প্রম্পট ছাড়াই সেটি পড়তে পারে।
  • -keyout এবং -out প্রাইভেট কী এবং CSR ফাইলগুলোর নাম নির্ধারণ করে।
  • -subj সার্টিফিকেটের সাবজেক্ট সরবরাহ করে। এখানে আপনার আসল কোম্পানির নাম, রাজ্য এবং শহর দিন, প্লেসহোল্ডার নয়। CN (Common Name) হলো আপনার প্রধান ডোমেইন।
  • -addext “subjectAltName=…” সার্টিফিকেটটি যেসব হোস্টনেম কভার করবে তার তালিকা দেয়। পাবলিক CA-গুলো SAN তালিকা যাচাই করে থাকে, তাই এখানে Common Name-ও অন্তর্ভুক্ত করুন।

সব জায়গায় yourdomain.com-এর পরিবর্তে আপনার প্রকৃত ডোমেইন বসান। অতিরিক্ত হোস্টনেম কভার করতে হলে, সেগুলো কমা দিয়ে আলাদা করে SAN তালিকায় যোগ করুন, যেমন DNS:api.yourdomain.com। ওয়াইল্ডকার্ড সার্টিফিকেটের জন্য, ওয়াইল্ডকার্ড এবং সাধারণ ডোমেইন উভয়ই অন্তর্ভুক্ত করুন: DNS:*.yourdomain.com,DNS:yourdomain.com। সাবজেক্ট ফিল্ডগুলোতে শুধুমাত্র অক্ষর এবং সংখ্যা ব্যবহার করুন, এবং C ফিল্ডের জন্য অফিসিয়াল দুই-অক্ষরের দেশের কোড ব্যবহার করুন।

যদি আপনি একটি ECDSA কী পছন্দ করেন (ছোট এবং দ্রুততর, এবং P-256 ব্যাপকভাবে সমর্থিত), তাহলে এভাবে কী এবং CSR তৈরি করুন:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

যদি আপনি বরং একের পর এক প্রম্পটের উত্তর দিতে চান, তাহলে openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr চালান, কোনো -subj বা -addext ছাড়াই। OpenSSL তখন একে একে প্রতিটি ফিল্ডের জন্য জিজ্ঞাসা করবে। যখন এটি জিজ্ঞাসা করে:

  • Country Name (C): আপনার দেশের দুই-অক্ষরের ISO কোড, যেমন US বা GB। Business Validation বা Extended Validation সার্টিফিকেটের জন্য, এটি অবশ্যই আপনার প্রতিষ্ঠানের নিবন্ধিত অফিসিয়াল দেশ হতে হবে।
  • State or Province Name (ST): পূর্ণ নাম, যেমন California। সংক্ষিপ্ত করবেন না।
  • Locality Name (L): শহর বা নগরের নাম, যেমন San Francisco
  • Organization Name (O): আপনার কোম্পানির অফিসিয়াল নিবন্ধিত নাম, যেমন GPI Holding LLC। Domain Validation সার্টিফিকেটের জন্য আপনি NA লিখতে পারেন।
  • Organizational Unit Name (OU): এই ফিল্ডটি অপ্রচলিত এবং পাবলিক CA-গুলো এটি উপেক্ষা করে। Enter চেপে এটি ফাঁকা রাখুন।
  • Common Name (CN): যে Fully Qualified Domain Name-এর জন্য সার্টিফিকেট তৈরি করা হচ্ছে, যেমন www.yourdomain.com। ওয়াইল্ডকার্ডের জন্য, *.yourdomain.com ব্যবহার করুন।
  • Email Address: ঐচ্ছিক এবং পাবলিক CA-গুলো এটি ব্যবহার করে না। আপনি এটি ফাঁকা রাখতে পারেন।
  • A challenge password এবং An optional company name: উভয়ই অপ্রচলিত অ্যাট্রিবিউট, যা পাবলিক CA-গুলো উপেক্ষা করে। এগুলো ফাঁকা রাখুন।

-addext ফ্ল্যাগ ছাড়া তৈরি হওয়া CSR-এ কোনো SAN এন্ট্রি থাকবে না। পাবলিক CA-গুলো SAN তালিকার বিরুদ্ধে যাচাই করে এবং SAN ছাড়া অনুরোধ প্রত্যাখ্যান করবে (অথবা নীরবে ওভাররাইড করবে), তাই উপরে দেখানো ইনলাইন -subj এবং -addext সহ কমান্ডটিই সুপারিশ করা হয়।

ধাপ ৩: আপনার ফাইলগুলো খুঁজে বের করুন

দুটি ফাইল তৈরি হয়েছে কিনা তা নিশ্চিত করতে বর্তমান ডিরেক্টরির তালিকা দেখুন:

ls

আপনি দুটি নতুন ফাইল দেখতে পাবেন:

  • yourdomain.key: আপনার প্রাইভেট কী। এটি সার্ভারেই রাখুন, নিরাপদে ব্যাকআপ নিন, এবং কখনো কারো কাছে পাঠাবেন না, এমনকি Certificate Authority-কেও নয়। যার কাছে এই কী থাকবে, সে আপনার সাইটের ছদ্মবেশ ধারণ করতে পারবে।
  • yourdomain.csr: আপনার Certificate Signing Request। এই ফাইলটিই আপনি SSL প্রদানকারীর কাছে জমা দেবেন।

প্রাইভেট কী-এর অ্যাক্সেস সীমিত করুন, যাতে শুধুমাত্র ফাইলের মালিকই এটি পড়তে পারেন:

chmod 600 yourdomain.key

ধাপ ৪: CSR যাচাই করুন (ঐচ্ছিক তবে সুপারিশকৃত)

জমা দেওয়ার আগে, নিশ্চিত করুন যে CSR-এ সঠিক সাবজেক্ট এবং SAN রয়েছে এবং এর স্বাক্ষর বৈধ। এটি স্থানীয়ভাবে OpenSSL দিয়ে অনুরোধটি ডিকোড করে:

openssl req -noout -text -verify -in yourdomain.csr

নিশ্চিত করুন যে Subject লাইনে আপনার বিবরণ দেখাচ্ছে, X509v3 Subject Alternative Name-এ আপনার প্রত্যাশিত সবগুলো হোস্টনেম তালিকাভুক্ত আছে, এবং স্বাক্ষর যাচাই verify OK দেখাচ্ছে। সিগনেচার অ্যালগরিদমটি sha256WithRSAEncryption (অথবা ECDSA কী-এর জন্য ecdsa-with-SHA256) দেখানো উচিত। যদি আপনি কমান্ড লাইন ব্যবহার করতে না চান, তাহলে ব্রাউজারে একই ফিল্ডগুলো পড়তে আমাদের অনলাইন CSR ডিকোডার-এ CSR পেস্ট করুন।

ধাপ ৫: আপনার CSR জমা দিন

আপনার অর্ডারের জন্য CSR কপি করতে, এর বিষয়বস্তু প্রিন্ট করুন:

cat yourdomain.csr

আপনি এমন একটি টেক্সট ব্লক দেখতে পাবেন:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

সম্পূর্ণ ব্লকটি কপি করুন, —–BEGIN CERTIFICATE REQUEST—– এবং —–END CERTIFICATE REQUEST—– লাইন দুটিসহ (প্রতিটি মার্কারের উভয় পাশে পাঁচটি করে হাইফেন আছে)। পুরো ব্লকটিই আপনার CSR। ক্রয়ের সময় অর্ডার ফর্মে এটি পেস্ট করুন, এবং সার্ভারে মিলে যাওয়া প্রাইভেট কী অক্ষত রাখুন।

যদি আপনি কমান্ড লাইন ব্যবহার করতে না চান, তাহলে আপনি আমাদের অনলাইন CSR জেনারেটর দিয়েও অনুরোধটি তৈরি করতে পারেন। মনে রাখবেন এটি আপনার ব্রাউজারে প্রাইভেট কী তৈরি করে, তাই সেই কীটি নিজে সংরক্ষণ করে সার্ভারে স্থানান্তর করুন।

আপনার CA অনুরোধটি যাচাই করার পর, আপনি আপনার সার্টিফিকেট পাবেন। যাচাইকরণ স্তরের উপর নির্ভর করে, Domain Validation-এর ক্ষেত্রে এটি কয়েক মিনিটের মধ্যে হয়ে যায়, আর Business Validation এবং Extended Validation-এর ক্ষেত্রে কয়েক কার্যদিবস পর্যন্ত সময় লাগতে পারে।

ধাপ ৬: Apache-এ সার্টিফিকেট ইনস্টল করুন

সার্টিফিকেট এসে পৌঁছানোর পর, ইস্যুকৃত সার্টিফিকেট (যেকোনো ইন্টারমিডিয়েট সহ একটি ফুলচেইন ফাইলে একত্র করা) এবং প্রাইভেট কী সার্ভারে রাখুন, তারপর আপনার সাইটের ভার্চুয়াল হোস্টে সেগুলোর দিকে Apache নির্দেশ করুন:

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

আধুনিক Apache (2.4.8 এবং তার পরবর্তী সংস্করণ) একটি একক ফাইল থেকে লিফ সার্টিফিকেট এবং যেকোনো ইন্টারমিডিয়েট পড়ে, যা SSLCertificateFile-এ দেওয়া হয়, তাই আপনার সার্টিফিকেট এবং CA বান্ডেল একটি ফাইলে একত্র করুন। পুরনো SSLCertificateChainFile নির্দেশনাটি অপ্রচলিত এবং বর্তমান Apache-এ ব্যবহার করা উচিত নয়। কনফিগারেশনটি apachectl configtest দিয়ে পরীক্ষা করুন এবং পরিবর্তন কার্যকর করতে Apache রিলোড করুন। সম্পূর্ণ কর্মপ্রবাহ দেখতে, আমাদের গাইড দেখুন কীভাবে Apache-এ একটি SSL সার্টিফিকেট ইনস্টল করবেন

আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!

দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10

উড়ন্ত একটি ড্রাগনের একটি বিস্তারিত চিত্র
লিখেছেন

SSL শংসাপত্রে বিশেষজ্ঞ অভিজ্ঞ বিষয়বস্তু লেখক। জটিল সাইবারসিকিউরিটি বিষয়গুলিকে পরিষ্কার, আকর্ষক সামগ্রীতে রূপান্তর করা। প্রভাবশালী বর্ণনার মাধ্যমে ডিজিটাল নিরাপত্তার উন্নতিতে অবদান রাখুন।