bg-tutorials

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

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

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

ধাপ ১: আপনার lighttpd সার্ভারে সংযোগ করুন

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

ssh your-user@your-lighttpd-server

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

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

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

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

নিচের OpenSSL কমান্ডটি চালান। এটি একটি ধাপেই একটি 2048-বিট RSA কী এবং একটি CSR তৈরি করে, যেখানে সাবজেক্ট এবং সাবজেক্ট অল্টারনেটিভ নেম (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 প্রাইভেট কী এনক্রিপ্ট না করেই রাখে, যাতে lighttpd স্টার্টআপের সময় কোনো পাসফ্রেজ প্রম্পট ছাড়াই এটি পড়তে পারে।
  • -keyout এবং -out প্রাইভেট কী এবং CSR ফাইলের নাম নির্ধারণ করে।
  • -subj সার্টিফিকেট সাবজেক্ট সরবরাহ করে। এখানে প্লেসহোল্ডার নয়, আপনার প্রকৃত কোম্পানির নাম, রাজ্য এবং শহর দিন। CN (কমন নেম) হলো আপনার প্রাথমিক ডোমেইন।
  • -addext “subjectAltName=…” সার্টিফিকেটকে অবশ্যই কভার করতে হবে এমন প্রতিটি হোস্টনেম তালিকাভুক্ত করে। পাবলিক CA-গুলো SAN তালিকার বিপরীতে যাচাই করে, তাই এখানে কমন নেমও অন্তর্ভুক্ত করুন।

সর্বত্র 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"

lighttpd mod_openssl-এর মাধ্যমে RSA এবং ECDSA উভয় সার্টিফিকেটই সমর্থন করে, এবং আপনি একই সকেটে দুটি জোড়া ssl.pemfilessl.privkey নির্দেশনা তালিকাভুক্ত করে উভয়ই পরিবেশন করতে পারেন।

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

  • Country Name (C): আপনার দেশের দুই-অক্ষরের ISO কোড, যেমন US বা GB। বিজনেস ভ্যালিডেশন বা এক্সটেন্ডেড ভ্যালিডেশন সার্টিফিকেটের জন্য, এটি অবশ্যই আপনার প্রতিষ্ঠানের নিবন্ধনের অফিসিয়াল দেশ হতে হবে।
  • State or Province Name (ST): সম্পূর্ণ নাম, যেমন Tennessee। সংক্ষিপ্ত করবেন না।
  • Locality Name (L): শহর বা টাউন, যেমন Nashville
  • Organization Name (O): আপনার কোম্পানির অফিসিয়াল নিবন্ধিত নাম, যেমন Your Company LLC। ডোমেইন ভ্যালিডেশন সার্টিফিকেটের জন্য আপনি NA লিখতে পারেন।
  • Organizational Unit Name (OU): এই ফিল্ডটি প্রত্যাখ্যাত এবং পাবলিক CA-গুলো এটি উপেক্ষা করে। Enter চেপে এটি খালি রাখুন।
  • Common Name (CN): যে ফুলি কোয়ালিফাইড ডোমেইন নেম-এর জন্য সার্টিফিকেটটি, যেমন 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: আপনার প্রাইভেট কী। এটি সার্ভারে রাখুন, নিরাপদে ব্যাকআপ নিন, এবং কখনো কারো কাছে পাঠাবেন না, সার্টিফিকেট অথরিটি সহ। যার কাছে এই কী থাকবে, সে আপনার সাইটের ছদ্মবেশ ধারণ করতে পারবে।
  • yourdomain.csr: আপনার সার্টিফিকেট সাইনিং রিকোয়েস্ট। এই ফাইলটিই আপনি 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 Decoder-এ 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 Generator দিয়েও রিকোয়েস্ট তৈরি করতে পারেন। মনে রাখবেন এটি আপনার ব্রাউজারে প্রাইভেট কী তৈরি করে, তাই সেই কীটি নিজে সংরক্ষণ করুন এবং সার্ভারে স্থানান্তর করুন।

আপনার CA রিকোয়েস্ট যাচাই করার পর, আপনি আপনার সার্টিফিকেট পাবেন। ভ্যালিডেশন লেভেলের উপর নির্ভর করে এটি ডোমেইন ভ্যালিডেশনের জন্য কয়েক মিনিট, অথবা বিজনেস ভ্যালিডেশন এবং এক্সটেন্ডেড ভ্যালিডেশনের জন্য কয়েক কর্মদিবস পর্যন্ত সময় নিতে পারে।

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

সার্টিফিকেট পৌঁছানোর পর, ইস্যু করা সার্টিফিকেট এবং এর ইন্টারমিডিয়েট চেইন প্রাইভেট কীর পাশে সার্ভারে রাখুন, তারপর আপনার TLS সকেট ব্লকে সেগুলোর দিকে lighttpd নির্দেশ করুন। বর্তমান lighttpd-এ TLS সাপোর্ট mod_openssl-এ থাকে, এবং প্রস্তাবিত ফরম্যাট (lighttpd 1.4.53 থেকে ssl.privkey চালু হওয়ার পর থেকে) সার্টিফিকেট প্লাস চেইন একটি ফাইলে এবং প্রাইভেট কী একটি আলাদা ফাইলে রাখে:

server.modules += ( "mod_openssl" )

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}

ssl.pemfile ফাইলে আপনার সার্টিফিকেট এবং তারপর ইন্টারমিডিয়েট সার্টিফিকেটগুলো থাকা উচিত (এটি তৈরি করুন cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem দিয়ে)। পুরনো একক-ফাইল ফরম্যাট, যা সার্টিফিকেট ও প্রাইভেট কীকে একটি ssl.pemfile-এ একত্রিত করত, তা এখনও পুরনো বিল্ডে কাজ করে, তবে আলাদা-ফাইল ফর্মটি সার্টিফিকেট অথরিটিগুলো যেভাবে ফাইল সরবরাহ করে তার সাথে মেলে এবং এটিই ডকুমেন্টেড সুপারিশ। কনফিগারেশনটি sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf দিয়ে পরীক্ষা করুন এবং পরিবর্তন প্রয়োগ করতে lighttpd পুনরায় চালু করুন। সম্পূর্ণ কর্মপ্রবাহের জন্য, আমাদের গাইড দেখুন lighttpd-এ কীভাবে SSL সার্টিফিকেট ইনস্টল করবেন

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

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

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

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