bg-tutorials

Qmail-এ কীভাবে CSR তৈরি করবেন

এই গাইডে দেখানো হয়েছে কীভাবে qmail-এ একটি CSR (Certificate Signing Request) তৈরি করবেন OpenSSL কমান্ড লাইন ব্যবহার করে। Qmail (এবং এর সক্রিয়ভাবে রক্ষণাবেক্ষণকৃত ফর্ক, notqmail) কোনো বিল্ট-ইন CSR টুল অন্তর্ভুক্ত করে না। আপনি OpenSSL ব্যবহার করে একসাথে দুটি ফাইল তৈরি করবেন: একটি প্রাইভেট কী যা সার্ভারে থেকে যায়, এবং CSR যা আপনি আপনার Certificate Authority (CA)-এর কাছে জমা দেন।

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

qmail বনাম notqmail সম্পর্কে একটি নোট: মূল qmail 1998 সালে Daniel J. Bernstein দ্বারা ফ্রিজ করা হয়েছিল এবং তারপর থেকে কোনো আপস্ট্রিম আপডেট পায়নি। notqmail (সর্বশেষ রিলিজ: 1.09, মে 2024) হলো কমিউনিটি-রক্ষণাবেক্ষণকৃত ফর্ক যা নিরাপত্তা সংশোধন, বর্তমান বিল্ড সামঞ্জস্য এবং চলমান পোর্টেবিলিটি কাজ যোগ করে। TLS এর অংশ নয়: notqmail-এ, মূল qmail-এর মতোই, STARTTLS একটি বাহ্যিক প্যাচ থেকে আসে, এবং 1.09 রিলিজ নোটে উল্লেখ করা হয়েছে যে বিদ্যমান smtp-tls প্যাচ সেই রিলিজে প্রযোজ্য নয় এবং একটি নতুন আপস্ট্রিম প্যাচ প্রয়োজন। সার্টিফিকেট অর্ডার করার আগে আপনি যে রিলিজ চালাচ্ছেন তার প্যাচ স্ট্যাটাস যাচাই করুন। CSR তৈরির প্রক্রিয়া উভয়ের জন্যই অভিন্ন, কারণ এটি কোনো qmail বাইনারির পরিবর্তে OpenSSL ব্যবহার করে। আপনি যদি এখনও মূল qmail চালাচ্ছেন, তাহলে চলমান নিরাপত্তা সহায়তার জন্য notqmail বা Postfix-এ স্থানান্তরের কথা বিবেচনা করুন।

পূর্বশর্তসমূহ

  • qmail (বা notqmail) চালাচ্ছে এমন সার্ভারে রুট বা sudo অ্যাক্সেস।
  • OpenSSL ইনস্টল করা থাকা আবশ্যক। এটি প্রতিটি মূলধারার Linux এবং BSD ডিস্ট্রিবিউশনের বেস সিস্টেমে থাকে। openssl version দিয়ে যাচাই করুন।
  • সার্টিফিকেটে যে সম্পূর্ণ যোগ্য মেইল হোস্টনেম আপনি চান, উদাহরণস্বরূপ mail.example.com। এটি অবশ্যই ক্লায়েন্টরা STARTTLS-এর মাধ্যমে যে MX রেকর্ডে সংযুক্ত হয় তার সাথে মিলতে হবে, খালি apex ডোমেইনের সাথে নয়।

ধাপ ১: কী এবং CSR-এর জন্য একটি ডিরেক্টরি প্রস্তুত করুন

Qmail-smtpd তার TLS সার্টিফিকেট /var/qmail/control/servercert.pem থেকে পড়ে, যে পাথটি TLS প্যাচ হার্ড-কোড করে দেয়। কী উপাদানের জন্য একটি সাবডিরেক্টরি তৈরি করুন এবং এটি শুধুমাত্র রুটের জন্য লক করুন:

sudo mkdir -p /var/qmail/control/ssl
sudo chmod 700 /var/qmail/control/ssl
cd /var/qmail/control/ssl

আপনি এই ডিরেক্টরির ভেতরে কী এবং CSR তৈরি করবেন। CA সার্টিফিকেট ইস্যু করার পর, আপনি ফাইলগুলোকে একত্রিত করে servercert.pem-এ পরিণত করবেন, যা qmail-smtpd স্টার্টআপে পড়ে।

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

নিচের কমান্ডটি চালান। এটি একই ধাপে প্রাইভেট কী এবং CSR তৈরি করে এবং Subject Alternative Name (SAN) অন্তর্ভুক্ত করে যা আধুনিক মেইল ক্লায়েন্ট এবং CA-গুলো প্রয়োজন করে। SAN-এ অবশ্যই মেইল হোস্টনেম (যেটির দিকে আপনার MX রেকর্ড নির্দেশ করে) তালিকাভুক্ত থাকতে হবে:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /var/qmail/control/ssl/mail.example.com.key 
-out /var/qmail/control/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

প্রতিটি অংশ যা করে তা এখানে দেওয়া হলো:

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

mail.example.com-কে ক্লায়েন্টরা যে প্রকৃত হোস্টনেমে সংযুক্ত হয় তা দিয়ে প্রতিস্থাপন করুন (প্রায়ই আপনার MX রেকর্ডের মতোই একই নাম), এবং আপনার প্রতিষ্ঠানের সাথে মিলিয়ে -subj মানগুলো সম্পাদনা করুন। দুই-অক্ষরের দেশ কোড (C) অবশ্যই বড় হাতের অক্ষরে হতে হবে, উদাহরণস্বরূপ US বা GB। একটি ডোমেইন-ভ্যালিডেটেড (DV) সার্টিফিকেটের জন্য, প্রতিষ্ঠান ফিল্ডগুলো যাচাই করা হয় না, কিন্তু কমান্ডে তবুও বৈধ মান প্রয়োজন। আধুনিক OpenSSL ডিফল্টভাবে SHA-256 দিয়ে CSR সাইন করে, যা প্রতিটি পাবলিক CA প্রয়োজন করে।

আপনি যদি -subj এর পরিবর্তে ইন্টারঅ্যাক্টিভভাবে ফিল্ড পূরণ করতে চান, তাহলে সেই ফ্ল্যাগটি বাদ দিন এবং OpenSSL প্রতিটি মানের জন্য আপনাকে প্রম্পট করবে:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /var/qmail/control/ssl/mail.example.com.key 
-out /var/qmail/control/ssl/mail.example.com.csr 
-addext "subjectAltName=DNS:mail.example.com"

প্রম্পট করা হলে, Enter চেপে challenge password এবং optional company name ফাঁকা রাখুন। CA-গুলো সেই ফিল্ডগুলো উপেক্ষা করে, এবং একটি challenge password পরে সমস্যার সৃষ্টি করে।

একাধিক হোস্টনেম কভার করা

একই qmail ইনস্ট্যান্স যদি একাধিক নামে সাড়া দেয় (উদাহরণস্বরূপ, উভয় mail.example.com এবং smtp.example.com), তাহলে SAN মানে প্রতিটি হোস্টনেম কমা দিয়ে আলাদা করে তালিকাভুক্ত করুন:

-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com"

Common Name এখনও প্রাথমিক মেইল হোস্টনেম হওয়া উচিত। SAN-এ খালি apex ডোমেইন যোগ করা তখনই উপকারী যখন মেইল ক্লায়েন্টরা সরাসরি এতে সংযুক্ত হয়; যদি আপনার MX রেকর্ড একটি সাব-হোস্টনেমে নির্দেশ করে, তাহলে সার্টিফিকেটে apex-এর প্রয়োজন নেই।

একটি ECDSA কী পছন্দ করেন?

ECDSA কী-গুলো একই নিরাপত্তা স্তরে RSA-এর চেয়ে ছোট এবং দ্রুততর এবং প্রতিটি বর্তমান মেইল ক্লায়েন্ট এবং CA দ্বারা সমর্থিত। পরিবর্তে একটি P-256 (prime256v1) কী এবং CSR তৈরি করতে, -newkey আর্গুমেন্ট পরিবর্তন করুন:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout /var/qmail/control/ssl/mail.example.com.key 
-out /var/qmail/control/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

লক্ষ্য করুন যে DJB-এর TLS প্যাচসহ মূল qmail ECDSA সমর্থন নাও করতে পারে। আপনি যদি বর্তমান OpenSSL সহ notqmail চালান, তাহলে ECDSA কোনো সমস্যা ছাড়াই কাজ করে।

ধাপ ৩: প্রাইভেট কী সুরক্ষিত করুন

প্রাইভেট কী লক করে রাখুন যাতে শুধুমাত্র রুট এটি পড়তে পারে। কাঁচা কী ফাইলটি শুধুমাত্র তখনই প্রয়োজন যখন আপনি পরে একত্রিত servercert.pem তৈরি করবেন, তাই রুট মালিকানা এবং মোড 600 সঠিক:

sudo chown root:root /var/qmail/control/ssl/mail.example.com.key
sudo chmod 600 /var/qmail/control/ssl/mail.example.com.key

CSR ফাইলটি গোপনীয় নয় (এতে শুধুমাত্র পাবলিক কী এবং আপনার সাবজেক্ট বিবরণ থাকে), তবে একই লক করা ডিরেক্টরিতে এটি রাখলে লেআউট পরিপাটি থাকে।

ধাপ ৪: CSR যাচাই করুন

রিকোয়েস্ট জমা দেওয়ার আগে, নিশ্চিত করুন যে এতে সঠিক হোস্টনেম এবং SAN রয়েছে এবং এর স্বাক্ষর বৈধ:

openssl req -noout -text -verify -in /var/qmail/control/ssl/mail.example.com.csr

আউটপুটে verify OK খুঁজুন, চেক করুন যে Subject লাইনটি আপনার মেইল হোস্টনেম Common Name হিসেবে দেখাচ্ছে, এবং নিশ্চিত করুন যে X509v3 Subject Alternative Name বিভাগে আপনার প্রত্যাশিত প্রতিটি হোস্টনেম তালিকাভুক্ত আছে। যদি কোনো SAN অনুপস্থিত থাকে, তাহলে সঠিক -addext মান দিয়ে CSR পুনরায় তৈরি করুন: ইস্যু করার পরে একটি CA হোস্টনেম যোগ করতে পারে না। আপনি ব্রাউজারে এই ফিল্ডগুলো যাচাই করতে আমাদের অনলাইন CSR Decoder-এ CSR পেস্ট করতে পারেন।

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

CSR ফাইলটি খুলুন এবং এর সম্পূর্ণ বিষয়বস্তু কপি করুন, BEGIN এবং END লাইন সহ:

cat /var/qmail/control/ssl/mail.example.com.csr

ব্লকটি দেখতে এমন হয়। প্রথম লাইন থেকে শেষ লাইন পর্যন্ত সবকিছু কপি করুন, BEGIN এবং END মার্কারের প্রতিটি পাশে পাঁচটি হাইফেন সহ:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----

সেই ব্লকটি আপনার SSL অর্ডার ফর্মে পেস্ট করুন। CA CSR যাচাই করে সার্টিফিকেট ইস্যু করার পর, এটি স্থাপন করতে আমাদের qmail SSL ইনস্টলেশন গাইড অনুসরণ করুন। সার্ভারে .key ফাইলটি রাখুন: STARTTLS সক্রিয় করতে আপনার এটি ইস্যুকৃত সার্টিফিকেটের সাথে প্রয়োজন হবে, এবং আপনার কখনো এটি CA বা অন্য কারো কাছে পাঠানো উচিত নয়।

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

qmail-এ ফাইলগুলো কোথায় যায়

প্রেক্ষাপটের জন্য, আপনি এইমাত্র তৈরি করা ফাইলগুলো CA সার্টিফিকেট এবং ইন্টারমিডিয়েট (CA বান্ডেল) ফেরত দেওয়ার পর qmail-এ যেভাবে সংযুক্ত হয় তা এখানে দেওয়া হলো। Qmail-smtpd একটি একক একত্রিত PEM ফাইল /var/qmail/control/servercert.pem থেকে তার TLS উপাদান পড়ে। এই ফাইলে অবশ্যই প্রাইভেট কী, সার্ভার সার্টিফিকেট, এবং ইন্টারমিডিয়েট সার্টিফিকেটগুলো, সেই ক্রমে সংযুক্ত থাকতে হবে:

cat mail.example.com.key mail.example.com.crt intermediate.pem 
> /var/qmail/control/servercert.pem
sudo chown root:nofiles /var/qmail/control/servercert.pem
sudo chmod 640 /var/qmail/control/servercert.pem

nofiles গ্রুপটি qmaild ব্যবহারকারীর ডিফল্ট গ্রুপ যেটি হিসেবে qmail-smtpd চলে। মোড 640 qmaild-কে গ্রুপ সদস্যপদের মাধ্যমে ফাইলটি পড়তে দেয় এবং একই সাথে এটি অন্য ব্যবহারকারীদের কাছে অপঠনযোগ্য রাখে। আপনার সিস্টেম যদি qmaild-এর জন্য ভিন্ন গ্রুপ ব্যবহার করে, তাহলে chown কমান্ডে সেই গ্রুপের নাম প্রতিস্থাপন করুন।

Qmail-smtpd শুধুমাত্র তখনই STARTTLS অফার করে যখন এটি TLS সাপোর্ট দিয়ে তৈরি করা হয়েছে, যা মূল qmail বা notqmail কোনোটিই নিজে থেকে দেয় না। উভয়ের ক্ষেত্রে সাধারণ পথটি হলো Frederik Vermeulen-এর qmail-tls প্যাচ: এটিই qmail-smtpd-কে servercert.pem পড়তে এবং সেই ফাইলটি জায়গামতো থাকা মাত্র STARTTLS বিজ্ঞাপন দিতে বাধ্য করে। অন্য পথটি হলো Erwin Hoffmann-এর s/qmail with ucspi-ssl, যেখানে sslserver /service/qmail-smtpd/run-এ UCSPITLS এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করে এবং কী একটি আলাদা serverkey.pem-এ থাকে, তাই উপরের একক-ফাইল লেআউট সেখানে প্রযোজ্য নয়। একত্রিত PEM ফাইলটি স্থাপন করার পর, qmail-smtpd সার্ভিস পুনরায় চালু করুন:

sudo svc -t /service/qmail-smtpd

OpenSSL দিয়ে সার্টিফিকেট চেইন যাচাইসহ সম্পূর্ণ ইনস্টল ওয়াক-থ্রু, আমাদের qmail SSL ইনস্টলেশন গাইডে রয়েছে।

ইনস্টলেশনের পর STARTTLS যাচাই করুন

সার্টিফিকেট ইনস্টল হয়ে গেলে, নিশ্চিত করুন যে আপনার সার্ভার STARTTLS বিজ্ঞাপন দেয় এবং একটি বৈধ চেইন সরবরাহ করে:

openssl s_client -connect mail.example.com:25 -starttls smtp -servername mail.example.com

Verify return code: 0 (ok) খুঁজুন এবং নিশ্চিত করুন যে সাবজেক্ট ও ইস্যুয়ার আপনার সার্টিফিকেটের সাথে মিলছে। আপনি সার্টিফিকেট চেইন এবং মেয়াদ শেষের তারিখের একটি ভিজ্যুয়াল রিপোর্টের জন্য আমাদের SSL Checker দিয়েও সার্ভার স্ক্যান করতে পারেন।

অন্যান্য মেইল প্ল্যাটফর্মে CSR তৈরি করুন

ভিন্ন মেইল সার্ভার চালাচ্ছেন? আমাদের অন্যান্য CSR গাইড দেখুন:

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

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

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

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