bg-tutorials

Apache-এ কীভাবে SSL সার্টিফিকেট ইনস্টল করবেন

এই গাইডে, আপনি ধাপে ধাপে শিখবেন Apache-এ SSL সার্টিফিকেট কীভাবে ইনস্টল করতে হয়। এই নির্দেশাবলী Apache 2.4-এর জন্য প্রযোজ্য, যা বর্তমান স্থিতিশীল রিলিজ লাইন।

সূচিপত্র

Apache-এ CSR কোড কীভাবে তৈরি করবেন?

সার্টিফিকেট সাইনিং রিকোয়েস্ট, বা সংক্ষেপে CSR, একটি ছোট টেক্সট ফাইল যাতে আপনার ডোমেইন মালিকানা এবং/অথবা কোম্পানির তথ্য থাকে। CSR তৈরি করা SSL কেনার প্রক্রিয়ার একটি অপরিহার্য অংশ, এবং সমস্ত বাণিজ্যিক সার্টিফিকেট অথরিটি SSL আবেদনকারীদের এই পদক্ষেপ সম্পূর্ণ করার প্রয়োজন করে।

আপনার কাছে দুটি বিকল্প আছে:

Apache-এ SSL সার্টিফিকেট ইনস্টল করুন

সার্টিফিকেট অথরিটি সার্টিফিকেট সাইন করে আপনাকে পাঠানোর পর, আপনি নিরাপদে এটি আপনার Apache সার্ভারে ইনস্টল করতে পারেন। নীচের পদক্ষেপগুলি অনুসরণ করুন।

পদক্ষেপ ১: আপনার সার্টিফিকেট ফাইল প্রস্তুত করুন

আপনার সার্টিফিকেট অথরিটি থেকে পাওয়া ZIP ফোল্ডার থেকে ফাইলগুলি ডাউনলোড করে এক্সট্র্যাক্ট করুন। আপনি সাধারণত এগুলো পাবেন:

  • .crt ফাইল – আপনার প্রাথমিক SSL সার্টিফিকেট।
  • .ca-bundle ফাইল – ইন্টারমিডিয়েট (এবং রুট) সার্টিফিকেটগুলি যা বিশ্বাসের চেইন তৈরি করে। ব্রাউজার এবং অ্যাপ্লিকেশনগুলি আপনার সার্টিফিকেট যাচাই করার জন্য এই চেইন প্রয়োজন। এটি ছাড়া, কিছু ক্লায়েন্ট আপনার সাইটকে নিরাপদ নয় বলে চিহ্নিত করতে পারে।

এই ফাইলগুলি, আপনার CSR-এর সাথে তৈরি করা প্রাইভেট কী (.key) সহ, আপনার সার্ভারে একটি সুরক্ষিত ডিরেক্টরিতে আপলোড করুন, উদাহরণস্বরূপ /etc/ssl/। প্রাইভেট কী শুধুমাত্র রুট দ্বারা পড়ার যোগ্য রাখুন (chmod 600)।

প্রস্তাবিত (Apache 2.4.8 এবং নতুন): আপনার সার্টিফিকেট এবং CA বান্ডলকে একটি একক “ফুল চেইন” ফাইলে একত্রিত করুন। Apache 2.4.8 থেকে, SSLCertificateFile নির্দেশনা সরাসরি এই ফাইল থেকে ইন্টারমিডিয়েট সার্টিফিকেটগুলি লোড করে, তাই পুরনো SSLCertificateChainFile নির্দেশনার আর প্রয়োজন নেই:

cat your_domain.crt your_domain.ca-bundle > your_domain_fullchain.crt

যদি আপনার CA ইন্টারমিডিয়েট সার্টিফিকেটগুলি আলাদা ফাইলে সরবরাহ করে, প্রথমে আপনার সার্টিফিকেটের সাথে সেগুলি সংযুক্ত করুন, তারপর আপনার সার্টিফিকেট সাইন করা ইন্টারমিডিয়েট থেকে রুট পর্যন্ত ক্রমানুসারে (রুট সার্টিফিকেট নিজেই ঐচ্ছিক):

cat your_domain.crt intermediate.crt root.crt > your_domain_fullchain.crt

উদাহরণস্বরূপ, একটি Sectigo PositiveSSL সার্টিফিকেট ইনস্টল করার সময়, আপনি আপনার ডোমেইন সার্টিফিকেটকে Sectigo ইন্টারমিডিয়েট বান্ডলের সাথে সংযুক্ত করবেন। সবসময় আপনার CA দ্বারা প্রদত্ত সঠিক ফাইলের নাম ব্যবহার করুন।

পদক্ষেপ ২: SSL মডিউল (mod_ssl) সক্রিয় করুন

HTTPS কনফিগার করার আগে, নিশ্চিত করুন যে Apache-এর SSL মডিউল সক্রিয় আছে।

Debian/Ubuntu-এ, mod_ssl (এবং mod_headers, যা আপনার পদক্ষেপ ৪-এ HSTS হেডারের জন্য প্রয়োজন হবে) সক্রিয় করুন:

sudo a2enmod ssl
sudo a2enmod headers

RHEL/CentOS/AlmaLinux/Rocky Linux-এ, SSL মডিউল প্যাকেজ ইনস্টল করুন (মডিউলটি ইনস্টল হয়ে গেলে স্বয়ংক্রিয়ভাবে লোড হয়):

sudo dnf install mod_ssl

পদক্ষেপ ৩: Apache কনফিগারেশন ফাইল খুঁজুন

আপনার অপারেটিং সিস্টেম এবং Apache সংস্করণের উপর নির্ভর করে, কনফিগারেশনটি বিভিন্ন ফাইলে থাকতে পারে। নীচের যেকোনো একটি স্থানে httpd.conf, apache2.conf, বা একটি নিবেদিত SSL/সাইট কনফিগারেশন ফাইল খুঁজুন:

  • Debian/Ubuntu: মূল কনফিগ /etc/apache2/apache2.conf; প্রতি-সাইট কনফিগ /etc/apache2/sites-available/-এ।
  • RHEL/CentOS/AlmaLinux/Rocky: মূল কনফিগ /etc/httpd/conf/httpd.conf; SSL কনফিগ /etc/httpd/conf.d/ssl.conf

দ্রষ্টব্য: যদি আপনার Apache সার্ভার Ubuntu-তে চলে, আপনি আমাদের নিবেদিত Ubuntu-এর জন্য SSL ইনস্টলেশন নির্দেশাবলী অনুসরণ করতে পারেন।

পদক্ষেপ ৪: ভার্চুয়াল হোস্ট কনফিগার করুন

প্রথমে, আপনার বর্তমান কনফিগারেশন ফাইলের ব্যাকআপ নিন। এভাবে, যদি কিছু ভুল হয়, আপনি দ্রুত আপনার পরিবর্তনগুলি ফিরিয়ে নিতে পারবেন:

sudo cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.backup

এখন কনফিগারেশন ফাইলটি খুলুন এবং HTTPS (পোর্ট 443) ভার্চুয়াল হোস্ট সেট আপ করুন। একটি সম্পূর্ণ, আধুনিক ভার্চুয়াল হোস্ট এরকম দেখায়:

<VirtualHost *:443>
    ServerName  www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example

    SSLEngine on

    # Apache 2.4.8+ : server certificate + intermediate chain in ONE file
    SSLCertificateFile    /etc/ssl/example_com_fullchain.crt
    SSLCertificateKeyFile /etc/ssl/example_com.key

    # Recommended TLS hardening (2026)
    SSLProtocol         -all +TLSv1.2 +TLSv1.3
    SSLHonorCipherOrder off

    # Tell browsers to always use HTTPS. Remove the leading # to enable HSTS,
    # but only after you have confirmed HTTPS works correctly:
    # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

    ErrorLog  ${APACHE_LOG_DIR}/example_error.log
    CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>

example.com, ডকুমেন্ট রুট, এবং ফাইল পাথগুলি আপনার নিজের মান দিয়ে প্রতিস্থাপন করুন। মূল নির্দেশনাগুলি যা করে তা এখানে দেওয়া হলো:

  • SSLEngine on – এই ভার্চুয়াল হোস্টের জন্য SSL/TLS সক্রিয় করে।
  • SSLCertificateFile – পদক্ষেপ ১-এ তৈরি করা আপনার ফুল-চেইন ফাইলের (সার্টিফিকেট + ইন্টারমিডিয়েট) পাথ। Apache 2.4.8+-এ এই একক নির্দেশনা অবচিত SSLCertificateChainFile-কে প্রতিস্থাপন করে।
  • SSLCertificateKeyFile – আপনার প্রাইভেট কী-এর পাথ, যা CSR-এর সাথে তৈরি করা হয়েছে।
  • SSLProtocol -all +TLSv1.2 +TLSv1.3 – পুরনো, অসুরক্ষিত SSL/TLS প্রোটোকল নিষ্ক্রিয় করে এবং শুধুমাত্র TLS 1.2 এবং TLS 1.3 অনুমতি দেয়।
  • Strict-Transport-Security (HSTS) – ব্রাউজারগুলিকে শুধুমাত্র HTTPS-এর মাধ্যমে সংযোগ করার নির্দেশ দেয়। এর জন্য mod_headers প্রয়োজন (পদক্ষেপ ২-এ সক্রিয় করা হয়েছে)। HTTPS সঠিকভাবে কাজ করছে তা নিশ্চিত করার পরই এটি চালু করুন।

নিশ্চিত করুন এই লাইনগুলির কোনোটিই # দিয়ে শুরু না হয় (যা তাদের কমেন্ট আউট করে দিবে)। Debian/Ubuntu-এ, ${APACHE_LOG_DIR} /var/log/apache2-এ রিসলভ হয়; RHEL-ভিত্তিক সিস্টেমে পরিবর্তে /var/log/httpd/ ব্যবহার করুন।

লিগ্যাসি সার্ভার: যদি আপনি Apache 2.4.8-এর পুরনো সংস্করণে আটকে থাকেন, সার্টিফিকেট এবং চেইনকে আলাদা ফাইলে রাখুন এবং SSLCertificateFile-এর নিচে অবচিত SSLCertificateChainFile /etc/ssl/example_com.ca-bundle নির্দেশনা যুক্ত করুন। কোনো আধুনিক সার্ভারে, উপরের ফুল-চেইন পদ্ধতি অগ্রাধিকারযোগ্য।

উন্নত হার্ডেনিং (ঐচ্ছিক): একটি শক্তিশালী সাইফার স্যুট এবং OCSP স্ট্যাপলিংয়ের জন্য, Mozilla SSL Configuration Generator দিয়ে একটি কাস্টমাইজড কনফিগারেশন তৈরি করুন। OCSP স্ট্যাপলিংয়ের জন্য আপনার গ্লোবাল Apache কনফিগারেশনে একটি SSLStaplingCache নির্দেশনাও প্রয়োজন।

সাইট সক্রিয় করুন: Debian/Ubuntu-এ, /etc/apache2/sites-available/-এ রাখা একটি ভার্চুয়াল হোস্ট আপনি এটি সক্রিয় না করা পর্যন্ত লোড হয় না। যদি আপনি এই কনফিগারেশন একটি নতুন ফাইল হিসাবে সংরক্ষণ করেন (উদাহরণস্বরূপ example-ssl.conf), এটিকে সক্রিয় করুন:

sudo a2ensite example-ssl.conf

আপনি এর পরিবর্তে সরবরাহকৃত default-ssl.conf এডিট করতে পারেন, কিন্তু এটিও a2ensite default-ssl দিয়ে সক্রিয় করতে হবে। RHEL/CentOS/AlmaLinux/Rocky-এ, /etc/httpd/conf.d/-এর ফাইলগুলি স্বয়ংক্রিয়ভাবে লোড হয় — কিন্তু মনে রাখবেন যে ssl.conf-এ ইতিমধ্যে একটি স্ব-সাইনকৃত সার্টিফিকেট সহ একটি ডিফল্ট <VirtualHost _default_:443> ব্লক থাকে, তাই দুটি ওভারল্যাপিং পোর্ট-443 হোস্ট এড়াতে সেই ব্লকটি এডিট করুন অথবা আপনার ভার্চুয়াল হোস্টকে /etc/httpd/conf.d/yourdomain.conf-এর মতো একটি আলাদা ফাইল হিসাবে যুক্ত করুন।

পদক্ষেপ ৫: HTTP থেকে HTTPS-এ রিডাইরেক্ট করুন

দর্শকরা সবসময় আপনার সাইটের সুরক্ষিত সংস্করণে পৌঁছান তা নিশ্চিত করতে, পোর্ট 80-এ একটি দ্বিতীয় ভার্চুয়াল হোস্ট যুক্ত করুন যা সমস্ত HTTP ট্রাফিককে স্থায়ীভাবে HTTPS-এ রিডাইরেক্ট করে:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>

পদক্ষেপ ৬: আপনার কনফিগারেশন পরীক্ষা করুন এবং Apache পুনরায় চালু করুন

পুনরায় চালু করার আগে সবসময় আপনার কনফিগারেশন পরীক্ষা করুন। একটি সিনট্যাক্স ত্রুটি আপনার সাইটকে অফলাইন করে দিতে পারে, তাই চালান:

sudo apachectl configtest

সবকিছু সঠিক থাকলে, আপনি দেখতে পাবেন:

Syntax OK

এখন Apache রিলোড করে পরিবর্তনগুলি প্রয়োগ করুন (একটি রিলোড বিদ্যমান সংযোগগুলি বন্ধ না করেই নতুন কনফিগারেশন সক্রিয় করে):

sudo systemctl reload apache2     # Debian/Ubuntu
sudo systemctl reload httpd       # RHEL/CentOS/AlmaLinux/Rocky

যদি একটি রিলোড পর্যাপ্ত না হয়, পরিবর্তে সার্ভিসটি পুনরায় চালু করুন (sudo systemctl restart apache2 অথবা httpd)। systemd ছাড়া পুরনো সিস্টেমে, sudo apachectl graceful ব্যবহার করুন।

ইনস্টলেশন সফল হলে, অভিনন্দন! আপনার ওয়েবসাইট এখন SSL/TLS দিয়ে সুরক্ষিত।

আপনার SSL ইনস্টলেশন পরীক্ষা করুন

Apache-এ আপনার SSL সার্টিফিকেট ইনস্টল করার পর, সবকিছু প্রত্যাশিতভাবে কাজ করছে তা যাচাই করুন। একটি তাৎক্ষণিক স্ক্যান এমন কোনো ত্রুটি বা দুর্বলতা প্রকাশ করবে যা আপনার সার্টিফিকেটের কার্যকারিতাকে প্রভাবিত করতে পারে। আপনার ইনস্টলেশনের স্থিতি চেক করতে আমাদের SSL Checker টুল ব্যবহার করুন।

আপনি সরাসরি কমান্ড লাইন থেকেও সার্টিফিকেট এবং তার চেইন নিশ্চিত করতে পারেন:

openssl s_client -connect www.example.com:443 -servername www.example.com

Apache-এর জন্য SSL সার্টিফিকেট কোথায় কিনবেন?

Apache-এর জন্য SSL সার্টিফিকেট পাওয়ার সর্বোত্তম স্থান হলো SSL Dragon। আমরা আমাদের সম্পূর্ণ SSL পণ্যের পরিসরে অতুলনীয় দাম এবং ছাড় প্রদান করি, এবং আমরা আপনার ওয়েবসাইটকে অভেদ্য সুরক্ষা দিতে বাজারের সেরা SSL ব্র্যান্ডগুলি সাবধানে নির্বাচন করেছি। আমাদের সমস্ত SSL সার্টিফিকেট Apache-এর সাথে সামঞ্জস্যপূর্ণ। এখনই একটি SSL সার্টিফিকেট নিন!

মনে রাখবেন যে SSL/TLS সার্টিফিকেটের মেয়াদ কমে যাচ্ছে: সর্বোচ্চ কার্যকারিতা ২০২৬ সালের মার্চে ২০০ দিনে, ২০২৭ সালে ১০০ দিনে, এবং ২০২৯ সালের মধ্যে মাত্র ৪৭ দিনে নেমে আসবে। ছোট জীবনচক্রের অর্থ হলো আরো বেশি নবায়ন প্রয়োজন, তাই আগে থেকেই আপনার নবায়ন প্রক্রিয়া (এবং স্বয়ংক্রিয়করণ) পরিকল্পনা করা মূল্যবান।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

Apache-এ SSL কী?

SSL (Secure Sockets Layer), যা এখন TLS (Transport Layer Security) দ্বারা প্রতিস্থাপিত হয়েছে, একটি ক্রিপ্টোগ্রাফিক প্রোটোকল যা দুটি নেটওয়ার্ক এন্ডপয়েন্টের মধ্যে যোগাযোগ এনক্রিপ্ট করে, উদাহরণস্বরূপ Apache-এর মতো একটি ওয়েব সার্ভার এবং একজন ব্যবহারকারীর ব্রাউজার।

আমি কীভাবে জানব Apache SSL সক্রিয় আছে কিনা?

Debian এবং Ubuntu ডিস্ট্রিবিউশনে, SSL প্রোটোকল নির্দেশনার জন্য কনফিগারেশন খুঁজুন:

grep -ir SSLProtocol /etc/apache2/

যদি SSL কনফিগার করা থাকে, আপনি এরকম আউটপুট দেখতে পাবেন:

/etc/apache2/mods-available/ssl.conf:SSLProtocol +TLSv1.2 +TLSv1.3

আপনি এটাও নিশ্চিত করতে পারেন যে SSL মডিউল চলমান সার্ভারে লোড হয়েছে:

apachectl -M | grep ssl

Apache-এ SSL .conf ফাইল কোথায় আছে?

আপনার OS এবং সেটআপের উপর নির্ভর করে কনফিগারেশন ফাইল বিভিন্ন স্থানে থাকতে পারে। Debian/Ubuntu-এ, /etc/apache2/apache2.conf এবং /etc/apache2/sites-available/-এর প্রতি-সাইট ফাইলগুলি চেক করুন। RHEL/CentOS/AlmaLinux/Rocky-এ, /etc/httpd/conf/httpd.conf এবং /etc/httpd/conf.d/ssl.conf চেক করুন।

SSLCertificateFile এবং SSLCertificateChainFile-এর মধ্যে পার্থক্য কী?

SSLCertificateFile আপনার সার্ভার সার্টিফিকেটের দিকে নির্দেশ করে। Apache 2.4.8 থেকে, একই ফাইল ইন্টারমিডিয়েট সার্টিফিকেটও ধরে রাখতে পারে, তাই এটি সম্পূর্ণ চেইন পরিবেশন করে। SSLCertificateChainFile ছিল সেই ইন্টারমিডিয়েটগুলি আলাদাভাবে সরবরাহ করার পুরনো পদ্ধতি, কিন্তু এটি Apache 2.4.8 থেকে অবচিত হয়ে গেছে। কোনো আধুনিক সার্ভারে, সার্টিফিকেট এবং ইন্টারমিডিয়েটগুলি একটি ফাইলে রাখুন এবং শুধুমাত্র SSLCertificateFile দিয়ে এটি রেফারেন্স করুন।

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

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

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

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