এই টিউটোরিয়ালে, আপনি শিখবেন কীভাবে বিল্ট-ইন https মডিউল ব্যবহার করে Node.js-এ একটি SSL সার্টিফিকেট ইনস্টল করতে হয়। Apache বা Nginx-এর মতো ওয়েব সার্ভারের বিপরীতে, Node.js আপনার সার্টিফিকেট, প্রাইভেট কী এবং CA চেইন সরাসরি JavaScript-এ লোড করে, তাই “ইনস্টলেশন” ঘটে আপনার অ্যাপ্লিকেশন কোডের ভেতরে।
Node.js-এ একটি CSR কোড তৈরি করুন
যদি আপনি এখনও একটি SSL সার্টিফিকেটের জন্য আবেদন না করে থাকেন, তাহলে আপনাকে প্রথমে একটি CSR (Certificate Signing Request) তৈরি করতে হবে। CSR হল একটি ছোট এনকোডেড টেক্সট ব্লক যাতে আপনার যোগাযোগের বিবরণ এবং পাবলিক কী থাকে, এবং আপনি অর্ডার করার সময় এটি সার্টিফিকেট অথরিটির কাছে জমা দেন। আপনার কাছে দুটি বিকল্প রয়েছে:
- আমাদের CSR জেনারেটর ব্যবহার করে স্বয়ংক্রিয়ভাবে CSR তৈরি করুন।
- Node.js-এ কীভাবে CSR তৈরি করতে হয় সে সম্পর্কে আমাদের ধাপে ধাপে টিউটোরিয়াল অনুসরণ করুন।
আপনার অর্ডারের সময় CSR-টি সার্টিফিকেট অথরিটির কাছে জমা দিন। CA এটি যাচাই করে এবং আপনার SSL সার্টিফিকেট ইস্যু করার পরে, নিচের ইনস্টলেশন প্রক্রিয়াটি চালিয়ে যান।
Node.js-এ একটি SSL সার্টিফিকেট ইনস্টল করুন
ধাপ ১: আপনার সার্টিফিকেট ফাইলগুলো প্রস্তুত করুন
যাচাইয়ের পরে, সার্টিফিকেট অথরিটি আপনাকে ইমেইলে সার্টিফিকেট ফাইলগুলো পাঠাবে। আর্কাইভটি এক্সট্র্যাক্ট করুন। আপনার কাছে থাকা উচিত:
- yourdomain.crt, আপনার প্রাথমিক ডোমেইন সার্টিফিকেট।
- yourdomain.ca-bundle, ইন্টারমিডিয়েট (এবং রুট) সার্টিফিকেটগুলো যা CA বান্ডেল গঠন করে।
- yourdomain.key, প্রাইভেট কী যা আপনি CSR-এর সাথে তৈরি করেছিলেন।
ব্রাউজারগুলোকে ইন্টারমিডিয়েট চেইন পেতে হবে, শুধু আপনার ডোমেইন সার্টিফিকেট নয়, নাহলে কিছু ক্লায়েন্ট সংযোগ প্রত্যাখ্যান করবে। Node.js-এ চেইন পরিবেশন করার সবচেয়ে পরিষ্কার উপায় হল আপনার সার্টিফিকেট এবং CA বান্ডেলকে একটি একক ফুল-চেইন ফাইলে একত্রিত করা:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
fullchain.crt এবং yourdomain.key ফাইলগুলো এমন কোথাও রাখুন যেখানে আপনার অ্যাপ সেগুলো পড়তে পারে, এবং প্রাইভেট কী শুধুমাত্র সেই ব্যবহারকারী দ্বারা পঠনযোগ্য রাখুন যিনি Node.js চালান।
ধাপ ২: Node.js-এ একটি HTTPS সার্ভার তৈরি করুন
একটি সার্ভার ফাইল তৈরি করুন। এই প্রদর্শনীর জন্য আমরা এটির নাম দিয়েছি https_server.js, তবে আপনি যেকোনো ফাইলনাম ব্যবহার করতে পারেন। নিচের উদাহরণে CommonJS (require) ব্যবহার করা হয়েছে, যা প্রতিটি সমর্থিত Node.js সংস্করণে কাজ করে। বোল্ড করা পথগুলো আপনার নিজেরটি দিয়ে প্রতিস্থাপন করুন:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
// Recommended TLS hardening (2026): never negotiate below TLS 1.2
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
আপনাকে বোল্ড করা অংশগুলো আপনার নিজস্ব তথ্য দিয়ে প্রতিস্থাপন করতে হবে:
- /path/to/private.key: আপনার প্রাইভেট কী ফাইলের সম্পূর্ণ পথ।
- /path/to/fullchain.crt: ধাপ ১-এ আপনার তৈরি করা ফুল-চেইন ফাইলের সম্পূর্ণ পথ।
পোর্ট সম্পর্কে দ্রষ্টব্য: HTTPS ডিফল্টভাবে পোর্ট 443 ব্যবহার করে। এতে বাইন্ড করতে উচ্চতর অনুমতি প্রয়োজন, তাই একটি রিভার্স প্রক্সির পেছনে বা ডেভেলপমেন্টে আপনি 8443-এর মতো একটি উচ্চ পোর্ট পছন্দ করতে পারেন। শুধু listen()-এ পাস করা মানটি পরিবর্তন করুন।
ES মডিউল পছন্দ করেন? যদি আপনার প্রজেক্ট package.json-এ (অথবা একটি .mjs ফাইলে) "type": "module" ব্যবহার করে, তাহলে এর পরিবর্তে import সিনট্যাক্স ব্যবহার করুন। TLS বিকল্পগুলো অভিন্ন:
import https from 'node:https';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
বিকল্প: ca: বিকল্প দিয়ে চেইন পাস করুন। যদি আপনি একটি ফুল-চেইন ফাইল তৈরি করার পরিবর্তে ফাইলগুলো আলাদা রাখতে চান, তাহলে cert-কে আপনার ডোমেইন সার্টিফিকেটের দিকে নির্দেশিত রাখুন এবং একটি ca অ্যারের মাধ্যমে ইন্টারমিডিয়েটগুলো সরবরাহ করুন:
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/yourdomain.crt'),
ca: [
fs.readFileSync('/path/to/intermediate.crt'),
fs.readFileSync('/path/to/ca_bundle.crt')
],
minVersion: 'TLSv1.2'
};
Express ব্যবহার করছেন? আপনার Express app-কে রিকোয়েস্ট হ্যান্ডলার হিসেবে পাস করুন। সার্টিফিকেট বিকল্পগুলো ঠিক একই থাকে:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, app).listen(443);
ধাপ ৩: আপনার Node.js HTTPS সার্ভার চালু করুন
অ্যাপটি চালু করতে নিম্নলিখিত কমান্ডটি চালান:
node https_server.js
আপনার অ্যাপ্লিকেশন এখন HTTPS-এর মাধ্যমে ট্রাফিক পরিবেশন করে। একটি প্রোডাকশন ডিপ্লয়মেন্টের জন্য, এটিকে একটি প্রসেস ম্যানেজারের অধীনে চালান (উদাহরণস্বরূপ PM2 বা একটি systemd সার্ভিস) যাতে এটি স্বয়ংক্রিয়ভাবে পুনরায় চালু হয় এবং রিবুটের পরেও টিকে থাকে।
ধাপ ৪: আপনার SSL ইনস্টলেশন পরীক্ষা করুন
আমাদের একটি SSL চেকার টুল ব্যবহার করে সম্ভাব্য ত্রুটি বা দুর্বলতার জন্য আপনার SSL ইনস্টলেশন পরীক্ষা করুন। আপনি কমান্ড লাইন থেকেও চেইনটি নিশ্চিত করতে পারেন:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
এটি সার্টিফিকেটের ইস্যুকারী এবং বৈধতার তারিখগুলো প্রিন্ট করে, নিশ্চিত করে যে আপনার Node.js সার্ভার সঠিক সার্টিফিকেট উপস্থাপন করছে।
Node.js-এর জন্য SSL সার্টিফিকেট কোথায় কিনবেন?
SSL Dragon আপনার সমস্ত SSL প্রয়োজনের জন্য উৎস। আমরা আমাদের সম্পূর্ণ SSL পণ্য পরিসরে বাজারের সর্বনিম্ন কিছু দাম অফার করি, এবং শক্তিশালী নিরাপত্তা ও নিবেদিত সহায়তার জন্য আমরা শিল্পের সেরা SSL ব্র্যান্ডগুলোর সাথে অংশীদারিত্ব করেছি। আমাদের সমস্ত SSL সার্টিফিকেট Node.js অ্যাপ্লিকেশনগুলোর সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ।
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, ৯৯.৯৯% ব্রাউজার বিশ্বাস, নিবেদিত সহায়তা, এবং ২৫ দিনের মানি-ব্যাক গ্যারান্টি।
সচরাচর জিজ্ঞাসিত প্রশ্নাবলী
বিল্ট-ইন https মডিউল ব্যবহার করুন। আপনার প্রাইভেট কী এবং ফুল-চেইন সার্টিফিকেট fs.readFileSync() দিয়ে পড়ুন, সেগুলোকে key এবং cert বিকল্প হিসেবে https.createServer()-এ পাস করুন, এবং .listen(443) কল করুন। Node.js আপনার জন্য TLS হ্যান্ডশেক পরিচালনা করে; কনফিগার করার জন্য আলাদা কোনো ওয়েব সার্ভার নেই।
আপনার ইন্টারমিডিয়েট চেইন পরিবেশন করার প্রয়োজন আছে, তবে এটি করার জন্য আপনার অগত্যা ca বিকল্পের প্রয়োজন নেই। সবচেয়ে সহজ পদ্ধতি হল আপনার ডোমেইন সার্টিফিকেট এবং CA বান্ডেলকে একটি ফুল-চেইন ফাইলে একত্রিত করা এবং cert-কে সেটির দিকে নির্দেশিত করা। শুধুমাত্র তখনই ca অ্যারে ব্যবহার করুন যদি আপনি সার্টিফিকেট এবং ইন্টারমিডিয়েটগুলো আলাদা ফাইলে রাখতে পছন্দ করেন।
Linux এবং macOS-এ, 1024-এর নিচের পোর্টগুলো সুবিধাপ্রাপ্ত। সরাসরি পোর্ট 443-এ বাইন্ড করতে উচ্চতর অনুমতি প্রয়োজন, যে কারণে অনেক সেটআপ একটি রিভার্স প্রক্সির (Nginx বা একটি লোড ব্যালেন্সার) পেছনে 8443-এর মতো একটি উচ্চ পোর্টে Node.js চালায় যা TLS বন্ধ করে বা ফরওয়ার্ড করে। ডেভেলপমেন্টের জন্য, শুধু listen()-এ পাস করা মানটি পরিবর্তন করুন।
হ্যাঁ। CommonJS (require) প্রতিটি সমর্থিত Node.js সংস্করণে কাজ করে, তবে যদি আপনার প্রজেক্ট একটি ES মডিউল হিসেবে কনফিগার করা থাকে (package.json-এ “type”: “module” বা একটি .mjs ফাইল), তাহলে আপনি এর পরিবর্তে import https from ‘node:https’ ব্যবহার করতে পারেন। উভয় ক্ষেত্রেই TLS বিকল্পগুলো অভিন্ন।
আপনার সাইটটি একটি ব্রাউজারে খুলুন এবং প্যাডলক পরীক্ষা করুন, আমাদের SSL চেকার টুল-এর মাধ্যমে এটি চালান, অথবা সার্ভার যে সার্টিফিকেট উপস্থাপন করে তা পরিদর্শন করতে টার্মিনাল থেকে echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com দিয়ে এটি কোয়েরি করুন।
সংক্ষেপে
Node.js-এ একটি SSL সার্টিফিকেট ইনস্টল করা মূলত একটি ফুল-চেইন সার্টিফিকেট তৈরি করা, fs.readFileSync() দিয়ে এটি এবং আপনার প্রাইভেট কী পড়া, minVersion: ‘TLSv1.2’ সহ https.createServer()-এ সেগুলো পাস করা, এবং node https_server.js দিয়ে অ্যাপটি শুরু করার মধ্যে সীমাবদ্ধ।
প্রথমে একটি সার্টিফিকেট প্রয়োজন? আমাদের SSL সার্টিফিকেট ব্রাউজ করুন।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


