স্ব-স্বাক্ষরিত সার্টিফিকেট কী?

স্ব-স্বাক্ষরিত সার্টিফিকেট হল একটি ডিজিটাল সার্টিফিকেট যা বিশ্বস্ত সার্টিফিকেট অথরিটি (CA) এর পরিবর্তে এর নিজস্ব নির্মাতা দ্বারা স্বাক্ষরিত হয়। Let's Encrypt, DigiCert, বা Comodo এর মতো CA দ্বারা জারি করা সার্টিফিকেটের বিপরীতে, স্ব-স্বাক্ষরিত সার্টিফিকেটগুলি ব্রাউজার এবং অপারেটিং সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে বিশ্বস্ত নয়।

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

সার্টিফিকেট জেনারেশন কীভাবে কাজ করে?

সার্টিফিকেট জেনারেশন প্রক্রিয়া বেশ কয়েকটি ক্রিপ্টোগ্রাফিক পদক্ষেপ জড়িত:

  1. কী পেয়ার জেনারেশন: একটি RSA কী পেয়ার (পাবলিক এবং প্রাইভেট কী) তৈরি করা হয়। প্রাইভেট কীটি গোপনীয় রাখতে হবে, যখন পাবলিক কীটি সার্টিফিকেটে এম্বেড করা হয়।

  2. সার্টিফিকেট তৈরি: বিষয়ের তথ্য (সাধারণ নাম, সংস্থা, দেশ ইত্যাদি), বৈধতার তারিখ এবং পাবলিক কী সহ একটি সার্টিফিকেট কাঠামো তৈরি করা হয়।

  3. স্ব-স্বাক্ষর: সার্টিফিকেটটি প্রাইভেট কী এবং একটি হ্যাশ অ্যালগরিদম (SHA-256, SHA-384, বা SHA-512) ব্যবহার করে ডিজিটালভাবে স্বাক্ষরিত হয়। এই স্বাক্ষর পাবলিক কী সহ যে কেউ সার্টিফিকেটের অখণ্ডতা যাচাই করতে পারে।

  4. PEM এনকোডিং: সার্টিফিকেট এবং প্রাইভেট কী PEM (Privacy-Enhanced Mail) ফরম্যাটে এনকোড করা হয়, একটি Base64-এনকোডেড ফরম্যাট যা সার্ভার এবং অ্যাপ্লিকেশন দ্বারা ব্যাপকভাবে সমর্থিত।

টুল বর্ণনা

এই টুলটি আপনার ব্রাউজারে সরাসরি স্ব-স্বাক্ষরিত X.509 সার্টিফিকেট এবং তাদের সংশ্লিষ্ট প্রাইভেট কী তৈরি করে। কোনো ডেটা কোনো সার্ভারে পাঠানো হয় না—সমস্ত ক্রিপ্টোগ্রাফিক অপারেশন node-forge লাইব্রেরি ব্যবহার করে স্থানীয়ভাবে ঘটে। আপনি সার্টিফিকেটের বিষয় ক্ষেত্র, কী আকার, বৈধতার সময়কাল এবং স্বাক্ষর অ্যালগরিদম কাস্টমাইজ করতে পারেন আপনার নির্দিষ্ট প্রয়োজনীয়তা অনুযায়ী।

উদাহরণ

মৌলিক localhost সার্টিফিকেট:

  • সাধারণ নাম: localhost
  • কী আকার: 2048 বিট
  • বৈধতা: 1 বছর
  • অ্যালগরিদম: SHA-256

ডেভেলপমেন্ট সার্ভার সার্টিফিকেট:

  • সাধারণ নাম: dev.myapp.local
  • সংস্থা: My Company
  • দেশ: US
  • কী আকার: 2048 বিট
  • বৈধতা: 2 বছর

আউটপুট ফরম্যাট (সার্টিফিকেট):

-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiUMA0GCSqGSIb3QasEBBUAMEUxCzAJBgNV
...
-----END CERTIFICATE-----

আউটপুট ফরম্যাট (প্রাইভেট কী):

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA0Z3VS5JJcds3xfn/ygWyF8PbnGy...
...
-----END RSA PRIVATE KEY-----

বৈশিষ্ট্য

  • ব্রাউজার-ভিত্তিক জেনারেশন: সমস্ত ক্রিপ্টোগ্রাফিক অপারেশন আপনার ব্রাউজারে স্থানীয়ভাবে চলে কোনো সার্ভার যোগাযোগ ছাড়াই
  • কাস্টমাইজযোগ্য কী আকার: বিভিন্ন নিরাপত্তা স্তরের জন্য 1024, 2048, 3072, বা 4096-বিট RSA কী থেকে নির্বাচন করুন
  • একাধিক স্বাক্ষর অ্যালগরিদম: SHA-256, SHA-384, এবং SHA-512 হ্যাশিং অ্যালগরিদমের জন্য সমর্থন
  • সম্পূর্ণ X.509 ক্ষেত্র: সাধারণ নাম, সংস্থা, সাংগঠনিক ইউনিট, দেশ, রাজ্য এবং স্থানীয়তা সেট করুন
  • নমনীয় বৈধতা সময়কাল: 30 দিন থেকে 10 বছর পর্যন্ত বৈধ সার্টিফিকেট তৈরি করুন

সার্টিফিকেট ক্ষেত্র ব্যাখ্যা

ক্ষেত্র বর্ণনা উদাহরণ
সাধারণ নাম (CN) ডোমেইন নাম বা হোস্টনাম যার জন্য সার্টিফিকেট localhost, example.com
সংস্থা (O) সংস্থার আইনি নাম Acme Corporation
সাংগঠনিক ইউনিট (OU) বিভাগ বা বিভাগ IT Department
দেশ (C) দুই-অক্ষর ISO দেশ কোড US, GB, DE
রাজ্য/প্রদেশ (ST) রাজ্য বা প্রদেশের নাম California
স্থানীয়তা (L) শহর বা শহরের নাম San Francisco

কী আকার সুপারিশ

  • 1024 বিট: উৎপাদনের জন্য সুপারিশ করা হয় না; শুধুমাত্র পরীক্ষার জন্য উপযুক্ত
  • 2048 বিট: মান নিরাপত্তা স্তর; বেশিরভাগ ব্যবহারের ক্ষেত্রে সুপারিশ করা হয়
  • 3072 বিট: উন্নত নিরাপত্তা; সংবেদনশীল ডেভেলপমেন্ট পরিবেশের জন্য ভাল
  • 4096 বিট: সর্বোচ্চ নিরাপত্তা; ধীর জেনারেশন কিন্তু সর্বোচ্চ সুরক্ষা

ব্যবহারের ক্ষেত্র

  1. স্থানীয় ডেভেলপমেন্ট সার্ভার: Service Workers, Geolocation API, বা WebRTC এর মতো নিরাপদ বৈশিষ্ট্যগুলি পরীক্ষা করতে localhost এর জন্য HTTPS সার্টিফিকেট তৈরি করুন যা নিরাপদ প্রসঙ্গ প্রয়োজন

  2. অভ্যন্তরীণ পরীক্ষার পরিবেশ: স্টেজিং সার্ভার এবং QA পরিবেশের জন্য সার্টিফিকেট তৈরি করুন যেখানে CA-স্বাক্ষরিত সার্টিফিকেট অপ্রয়োজনীয়

  3. Docker এবং কন্টেইনারাইজড অ্যাপ্লিকেশন: ডেভেলপমেন্ট বা বিচ্ছিন্ন নেটওয়ার্কে কন্টেইনারগুলির মধ্যে নিরাপদ যোগাযোগ

  4. API ডেভেলপমেন্ট এবং পরীক্ষা: OAuth প্রবাহ, নিরাপদ webhooks এবং সার্টিফিকেট পিনিং পরীক্ষা করতে স্থানীয় API সার্ভারের জন্য HTTPS সক্ষম করুন

  5. শিক্ষা এবং শিক্ষা: আপনার নিজের সার্টিফিকেট তৈরি এবং পরিদর্শন করে SSL/TLS সার্টিফিকেটগুলি কীভাবে কাজ করে তা বুঝুন

ইনস্টলেশন নির্দেশাবলী

আপনার সার্টিফিকেট তৈরি করার পরে, আপনাকে আপনার সার্ভার কনফিগার করতে এবং সম্ভবত সার্টিফিকেট বিশ্বাস করতে হবে:

Node.js/Express এর জন্য:

const https = require("https");
const fs = require("fs");

const options = {
  key: fs.readFileSync("private-key.pem"),
  cert: fs.readFileSync("certificate.pem"),
};

https.createServer(options, app).listen(443);

nginx এর জন্য:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/private-key.pem;
}

সার্টিফিকেট বিশ্বাস করা (macOS):

  1. Keychain Access খুলুন
  2. certificate.pem ফাইল আমদানি করুন
  3. সার্টিফিকেটে ডাবল-ক্লিক করুন এবং "Trust" কে "Always Trust" এ সেট করুন

সার্টিফিকেট বিশ্বাস করা (Windows):

  1. certificate.pem ফাইলে ডাবল-ক্লিক করুন
  2. "Install Certificate" এ ক্লিক করুন
  3. "Local Machine" নির্বাচন করুন এবং "Trusted Root Certification Authorities" এ রাখুন

নিরাপত্তা বিবেচনা

  • উৎপাদনে স্ব-স্বাক্ষরিত সার্টিফিকেট কখনও ব্যবহার করবেন না জনসাধারণের মুখোমুখি ওয়েবসাইটের জন্য
  • আপনার প্রাইভেট কী সুরক্ষিত রাখুন—অ্যাক্সেস সহ যে কেউ আপনার সার্ভারের প্রতিনিধিত্ব করতে পারে
  • স্ব-স্বাক্ষরিত সার্টিফিকেট ব্রাউজার সতর্কতা দেখাবে কারণ সেগুলি ডিফল্টরূপে বিশ্বস্ত নয়
  • ডেভেলপমেন্টের জন্য সংক্ষিপ্ত বৈধতার সময়কাল ব্যবহার করুন সার্টিফিকেট রোটেশন উৎসাহিত করতে
  • mkcert এর মতো টুল ব্যবহার করার বিবেচনা করুন ডেভেলপমেন্টের জন্য যদি আপনার বিশ্বস্ত স্থানীয় সার্টিফিকেট প্রয়োজন হয়