SSL/TLS সার্টিফিকেট জেনারেট করার প্রক্রিয়া बहুতvenu Linux সিস্টেম অ্যাডমিনিস্ট্রেটরদের জন্য একটি কমন টাস্ক। خوشকিস্মতено, আপনি যদি অ্যাডমিন না হোন, OpenSSL ব্যবহার করে এটি করা সহজ, একটি ওপেন-সোর্স টুল যা অনেক লিনাক্স ডিস্ট্রিবিউশনে ডিফল্টভাবে ইনস্টলড থাকে। এখানে আমরা ব্যাখ্যা করব OpenSSL কী, কীভাবে ইনস্টল করবেন, এবং সবচেয়ে গুরুত্বপূর্ণ, কীভাবে এটি ব্যবহার করে আপনার সিস্টেমে SSL এবং TLS সার্টিফিকেট জেনারেট করবেন।
OpenSSL কী?
OpenSSL হল OpenSSL প্রজেক্ট দ্বারা ডেভেলপ করা একটি লাইব্রেরি যা নেটওয়ার্ক ট্রাফিক এনক্রিপশনের জন্য ওপেন-সোর্স SSL এবং TLS ইমপ্লিমেন্টেশন প্রদান করে। এটি বিভিন্ন Unix-ভিত্তিক ডিস্ট্রিবিউশনের জন্য সহজে উপলব্ধ এবং সার্টিফিকেট, RSA প্রাইভেট কী জেনারেট করতে এবং সাধারণ ক্রিপ্টোগ্রাফি-রিলেটেড টাস্ক করতে ব্যবহার করা যায়।
সেলফ-सাইনড SSL সার্টিফিকেটের সীমাবদ্ধতা
আপনি OpenSSL ব্যবহার করে যখন একটি SSL সার্টিফিকেট জেনারেট করেন, তবে এটি "সেলফ-सাইনড" মনে করা হয়। এর মানে হল SSL সার্টিফিকেটটি নিজস্ব প্রাইভেট কী দিয়ে সাইন করা হয়েছে, কোন সার্টিফিকেট অথরিটি (CA) থেকে নয়।
তাই, SSL সার্টিফিকেটটি "ট্রাস্টেড" হতে পারে না এবং যেকোনো পাবলিক ফেসিং সাইটের জন্য ব্যবহার করা উচিত নয়। ব্যবহার করলে ইউজাররা তাদের ব্রাউজার থেকে সার্টিফিকেট সম্পর্কে ওয়ার্নিং দেখবে।
একটি সেলফ-सাইনড সার্টিফিকেট লোকাল ডেভেলপমেন্ট বা ব্যাকগ্রাউন্ডে চলা যেসব অ্যাপ যা ইন্টারনেট-ফেসিং নয় সেসব জন্য উপযোগী।
বিকল্পভাবে, আপনি Let's Encrypt ব্যবহার করতে পারেন বা একটি ট্রাস্টেড অথরিটি যেন Comodo CA দ্বারা ভেরিফাইড সার্টিফিকেট পেতে পারেন।
ইনস্টলেশন
অধিকাংশ লিনাক্স ডিস্ট্রিবিউশনে ডিফল্টভাবে OpenSSL-এর একটি ভার্সন বিল্ট-ইন থাকে। না থাকলে, আপনি সহজে ইনস্টল করতে পারেন।
উবুন্টু এবং ডেবিয়ানে apt কমান্ড ব্যবহার করে ইনস্টল করুন:
sudo apt install openssl
CentOS (বা এর অ্যাল্টার্নেটিভ) এ yum কমান্ড ব্যবহার করে ইনস্টল করুন:
sudo yum install openssl
আপনি এর ওয়েবসাইট থেকে ".tar.gz" ফাইল হিসেবে সহজে ডাউনলোডও করতে পারেন।
বেসিক ব্যবহার
এখন আপনার OpenSSL ইনস্টলড আছে, আমরা প্রোগ্রামটি যা প্রদান করে কিছু বেসিক ফাংশন দেখে নেই।
আপনি আপনার OpenSSL ইনস্টলেশনের ভার্সন এবং অন্যান্য রিলেভেন্ট ইনফরমেশন দেখে নিতে পারেন:
openssl version -a
আপনি প্রদত্ত ম্যানুয়াল চেক আউট করতে পারেন:
openssl help
একটি কনফিগারেশন ফাইল ব্যবহার করে সার্টিফিকেট জেনারেট করা
OpenSSL ব্যবহার করে সার্টিফিকেট জেনারেট করা অনেক পথে সম্ভব। उनमें একটি হল একটি কনফিগারেশন ফাইল ব্যবহার করা যা অর্গানাইজেশন সম্পর্কে ডিটেইলস স্পেসিফাই করবে।
শুরু করতে, আপনি "config.conf" নামে একটি কনফিগারেশন ফাইল তৈরি করতে পারেন এবং Nano দিয়ে এডিট করতে পারেন:
sudo nano example.conf
এখানে কনফিগারেশন ফাইলটির কন্টেন্টের একটি উদাহরণ:
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext x509_extensions= v3_ca distinguished_name = dn [dn] C = US ST = California L = Los Angeles O = Org OU = Sales emailAddress = test@test.com CN = www.org.test.com [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = test.example.com
আপনি এটিকে কপি-পেস্ট করে ফাইলে দিয়ে আপনার অর্গানাইজেশনের ইনফরমেশন রিফলেক্ট করার জন্য প্রয়োজনীয় পরিবর্তনগুলো করতে পারেন।
পরবর্তী, আপনাকে একটি RSA প্রাইভেট কী জেনারেট করতে হবে, যা তারপর একটি রুট সার্টিফিকেট জেনারেট করতে ব্যবহার হবে:
openssl genrsa -out example.key 2048
এই কেসে -out ফ্ল্যাগটি ব্যবহার করা হয়েছে জেনারেট হওয়া কীর নাম স্পেসিফাই করার জন্য। ২০৪৮ বিটের একটি কী সাইজও স্পেসিফাই করা হয়েছে, যা RSA কীর জন্য ডিফল্ট।
আপনাকে একটি সার্টিফিকেট সাইনিং রিকোয়েস্ট (CSR) ও জেনারেট করতে হবে:
openssl req -new -key example.key -out example.csr -config example.conf
এই কেসে, -key ফ্ল্যাগটি RSA কী স্পেসিফাই করতে ব্যবহার করা হয়েছে, -out ফ্ল্যাগটি CSR ফাইলের নাম স্পেসিফাই করে এবং -config ফ্ল্যাগটি কনফিগারেশন ফাইলের নাম স্পেসিফাই করতে ব্যবহার করা হয়েছে।
এই পর, আপনি একটি রুট সার্টিফিকেট জেনারেট করতে পারেন, যা আপনার চূড়ান্ত সার্টিফিকেট জেনারেট করতে ব্যবহার হবে:
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
এই রুট সার্টিফিকেট জেনারেট করার প্রক্রিয়ায়, -sha256 ফ্ল্যাগটি SHA256 কে মেসেজ ডাইজেস্ট হিসেবে স্পেসিফাই করতে ব্যবহার করা হয়েছে।
এখন, চূড়ান্ত ধাপ হিসেবে, আমরা নিচের কমান্ড টাইপ করে আমাদের সার্টিফিকেট জেনারেট করতে পারি:
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
-CA ফ্ল্যাগটি রুট সার্টিফিকেট স্পেসিফাই করে, -CAkey ফ্ল্যাগটি প্রাইভেট কী স্পেসিফাই করে এবং -extfile কনফিগারেশন ফাইলের নাম স্পেসিফাই করে। "final.crt" ফাইলটি হবে আপনার চাওয়া SSL সার্টিফিকেট।
কনফিগারেশন ফাইল ছাড়া সার্টিফিকেট জেনারেট করা
বিকল্পভাবে, আপনি কনফিগারেশন ফাইল ছাড়া OpenSSL ব্যবহার করে একটি সার্টিফিকেট জেনারেট করতে পারেন।
আপনি একটি RSA প্রাইভেট কী জেনারেট করে শুরু করতে পারেন:
openssl genrsa -out example.key 2048
পরবর্তী, আপনাকে একটি CSR জেনারেট করতে হবে:
openssl req -new -key example.key -out example.csr
CSR জেনারেট করার সময়, আপনাকে আপনার অর্গানাইজেশন সম্পর্কে কয়েকটি প্রশ্নের উত্তর দিতে হবে।
চূড়ান্তে, আমরা সার্টিফিকেটটি জেনারেট করতে পারি:
openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
কী এবং সার্টিফিকেট ভেরিফিকেশন
OpenSSL ব্যবহার করে কী এবং সার্টিফিকেট সহজে চেক এবং ভেরিফাই করা যায়, -check ফ্ল্যাগ দিয়ে:
openssl rsa -check -in example.key
আপনি সার্টিফিকেট সাইনিং রিকোয়েস্ট চেক করতে পারেন:
openssl req -text -noout -in example.csr
এবং সার্টিফিকেটও:
openssl x509 -text -noout -in example.crt
ফ্রিকোয়েন্টলি আস্কড কুয়েশচনস
১. কি আমাকে হার্টব্লিড নিয়ে চিন্তা করতে হবে?
হার্টব্লিড (CVE-2014-0160) হল ২০১৪ সালে OpenSSL-এ আবিষ্কৃত একটি পুরনো ভালনারেবিলিটি। TLS-সার্ভার এবং ক্লায়েন্ট যারা OpenSSL চালাচ্ছিল তারা দুজনোই প্রভাবিত হয়েছিল। এর আবিষ্কারের кіль দিন পর একটি প্যাচ দ্রুত রিলিজ করা হয়েছিল, এবং ২০২২ সালে এটি কিছু চিন্তার বিষয় নয় যতক্ষণ না আপনি একটি মডার্ন এবং আপ-টু-ডেট ভার্সন OpenSSL রান করছেন।
আপনি যদি ডেবিয়ান এবং উবুন্টু-ভিত্তিক সিস্টেমে OpenSSL ব্যবহার করেন, তবে আপনি সবসময় নিচের কমান্ড চালিয়ে এটিকে আপডেট করতে পারেন:
sudo apt update && sudo apt upgrade openssl
২. SSL সার্টিফিকেট কতদিন টিকে থাকে এক্সপায়ার হওয়ার আগে?
এটি নির্ভর করে সার্টিফিকেট জেনারেট করার সময় আপনি যে ভ্যালু বেছে নিলেন সেটি ওপর। এটি -days ফ্ল্যাগ ব্যবহার করে সার্টিফিকেট জেনারেট করার সময় স্পেসিফাই করা যায়।