bg-tutorials

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

এই টিউটোরিয়ালটি আপনাকে দেখাবে কীভাবে NGINX-এ CSR তৈরি করবেন। NGINX নিজে থেকে Certificate Signing Request তৈরি করে না: আপনি প্রাইভেট কী এবং CSR তৈরি করেন OpenSSL দিয়ে সেই একই সার্ভারে যেখানে সার্টিফিকেট হোস্ট করা হবে, তারপর CSR-টি আপনার Certificate Authority-তে জমা দেন। ইস্যু করা সার্টিফিকেট ফেরত এলে, আপনি NGINX-কে ssl_certificate এবং ssl_certificate_key ডাইরেক্টিভ দিয়ে সেটির দিকে নির্দেশ করেন।

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

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

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

ssh your-user@your-nginx-server

সার্টিফিকেট পরিবেশন করবে এমন সার্ভারেই CSR তৈরি করুন। প্রাইভেট কী CSR-এর পাশেই তৈরি হয় এবং সেটি ঐ সার্ভারেই থাকতে হবে। এই কমান্ডগুলো স্থানীয়ভাবে চালিয়ে তারপর কী-টি অন্যত্র কপি করলে প্রাইভেট কী রাখার মূল উদ্দেশ্যই ব্যর্থ হয়ে যায়।

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

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

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

যদি আপনি একটি 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 -addext সমর্থন না করে

খুব পুরনো সিস্টেমে যেখানে OpenSSL 1.1.1-এর চেয়ে পুরনো, সেখানে -addext ফ্ল্যাগটি পাওয়া যায় না। এই কনটেন্ট দিয়ে san.cnf নামে একটি ছোট কনফিগ ফাইল তৈরি করুন:

[ req ]
default_bits       = 2048
prompt             = no
default_md         = sha256
distinguished_name = dn
req_extensions     = req_ext

[ dn ]
C  = US
ST = YourState
L  = YourCity
O  = YourCompany
CN = yourdomain.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = yourdomain.com
DNS.2 = www.yourdomain.com

তারপর চালান:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key -out yourdomain.csr -config san.cnf

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

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

ls

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

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

প্রাইভেট কী-তে সাথে সাথেই কঠোর পারমিশন সেট করুন যাতে শুধু root এটি পড়তে পারে:

sudo chmod 600 yourdomain.key
sudo chown root:root 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-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

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

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

CA সার্টিফিকেট ইস্যু করার পর কী ঘটে

একবার CA CSR যাচাই করে সার্টিফিকেট ইস্যু করলে, আপনি সাধারণত আপনার সার্ভার সার্টিফিকেট (আপনার ডোমেইনের নামে একটি .crt ফাইল) পাবেন, সাথে এক বা একাধিক ইন্টারমিডিয়েট সার্টিফিকেট, যা কখনো কখনো একটি .ca-bundle ফাইলে বান্ডিল করা থাকে। NGINX আশা করে যে সার্ভার সার্টিফিকেট এবং ইন্টারমিডিয়েট চেইন একটি একক ফাইলে (“fullchain”) মিলিত থাকবে এবং ssl_certificate দিয়ে সেটির দিকে নির্দেশ করা থাকবে; আপনার উপরে তৈরি করা প্রাইভেট কী-টি আলাদাভাবে ssl_certificate_key দিয়ে নির্দেশিত হয়। সম্পূর্ণ প্রক্রিয়াটি (fullchain তৈরি করা, সার্ভার ব্লক এডিট করা, টেস্ট করা এবং রিলোড করা) আমাদের NGINX SSL ইনস্টলেশন টিউটোরিয়াল-এ বিস্তারিত বলা আছে।

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

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

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

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