نصب و پیکربندی SSL رایگان Let’s Encrypt با Certbot روی Apache (Debian 11)

این راهنما به شما نشان می‌دهد چگونه با استفاده از Certbot گواهی TLS/SSL رایگان از Let’s Encrypt دریافت و آن را برای وب‌سرور Apache روی Debian 11 پیکربندی کنید. مثال‌ها بر پایه پیکربندی مجزای VirtualHost هستند که روند نگهداری و عیب‌یابی را ساده‌تر می‌کند.

پیش‌نیازها

  • یک سرور Debian 11 با یک کاربر غیر-root دارای دسترسی sudo.
  • یک نام دامنه ثبت‌شده (در ادامه از your_domain به عنوان نمونه استفاده شده است) که رکوردهای DNS آن به سرور شما اشاره کند. (برای ایجاد رکورد A یا AAAA در پنل DNS خود اقدام کنید.)
  • نصب Apache و داشتن یک فایل VirtualHost جداگانه برای دامنه در /etc/apache2/sites-available/your_domain.conf با دستور ServerName مناسب.
  • فایروال فعال (مثلاً ufw) با امکان باز کردن ترافیک HTTP و HTTPS.

چرا از Certbot به‌شکل snap استفاده کنیم؟

نسخه snap از Certbot معمولاً جدیدتر است و با آخرین تغییرات Let’s Encrypt همگام است. راهنما بر پایه نصب Certbot از طریق snapd نوشته شده است.

۱. نصب snapd و Certbot

در صورت نیاز، ابتدا شاخص بسته‌ها را بروزرسانی کنید و سپس snapd را نصب کنید:

sudo apt update
sudo apt install snapd

سپس هستهٔ snap را نصب/به‌روز کنید:

sudo snap install core
sudo snap refresh core

برای نصب Certbot از confinement مناسب استفاده کنید (Certbot نیاز دارد فایل‌های مربوط به Apache را ویرایش کند):

sudo snap install --classic certbot

در ادامه یک لینک نمادین بسازید تا دستور certbot در مسیرهای معمول در دسترس باشد:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

۲. اطمینان از پیکربندی صحیح Apache

Certbot برای اعمال خودکار تنظیمات SSL باید VirtualHost مناسب را پیدا کند. مطمئن شوید فایل VirtualHost شما دارای دستور ServerName است:

sudo nano /etc/apache2/sites-available/your_domain.conf
# Ensure a line like:
# ServerName your_domain

سپس سینتکس پیکربندی Apache را بررسی کنید و سرویس را مجدداً بارگذاری نمایید:

sudo apachectl configtest
sudo systemctl reload apache2

۳. باز کردن پورت HTTPS در فایروال (ufw)

اگر از ufw استفاده می‌کنید، پروفایل‌های پیش‌فرض برای HTTP/HTTPS وجود دارند. وضعیت فعلی را بررسی کنید:

sudo ufw status

برای اجازه دادن به ترافیک HTTPS:

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

۴. اجرای Certbot با پلاگین Apache

برای گرفتن گواهی و پیکربندی خودکار Apache از پلاگین Apache استفاده کنید. مثال زیر دامنه اصلی و نسخه www را شامل می‌شود:

sudo certbot --apache -d your_domain -d www.your_domain

در اولین اجرا از شما درخواست خواهد شد ایمیل وارد کنید، با شرایط سرویس موافقت کنید و مشخص کنید آیا می‌خواهید آدرس ایمیلتان با EFF به اشتراک گذاشته شود یا خیر. Certbot سپس چالش‌های Let’s Encrypt را اجرا می‌کند، گواهی را صادر می‌کند و تنظیمات Apache را تغییر داده و سرویس را مجدداً راه‌اندازی می‌کند.

۵. تست نوآوری (renewal)

گواهی‌های Let’s Encrypt به‌مدت ۹۰ روز صادر می‌شوند؛ Certbot یک تسک زمان‌بندی‌شده برای تمدید خودکار اضافه می‌کند که روزی دو بار اجرا می‌شود. برای تست فرآیند تمدید از حالت آزمایشی استفاده کنید:

sudo certbot renew --dry-run

در صورت عدم رخداد خطا، تمدید خودکار به درستی کار می‌کند.

پرسش متداول — آیا می‌توان فقط از آدرس IP استفاده کرد؟

خلاصه پاسخ: نه، Let’s Encrypt گواهی برای آدرس IP عمومی صادر نمی‌کند. برای استفاده از گواهی‌های Let’s Encrypt نیاز به یک نام دامنه دارید که به آی‌پی سرور اشاره کند.

گزینه‌ها و توضیحات:

  • استفاده از نام دامنه: بهترین و معمول‌ترین راه، ثبت یک دامنه و ایجاد رکورد A (یا AAAA) است که به سرور شما اشاره کند. سپس می‌توانید از Certbot و Let’s Encrypt گواهی بگیرید.
  • DNS پویا (DDNS): اگر آی‌پی شما پویا است، می‌توانید از سرویس‌های DDNS استفاده کنید تا یک نام دامنه همواره به آی‌پی شما نگاشت شود و سپس برای آن نام دامنه گواهی بگیرید.
  • گواهی خودامضا (self-signed): می‌توانید گواهی خودامضا بسازید و روی سرور نصب کنید، اما مرورگرها آن را قابل اعتماد نخواهند دید مگر اینکه گواهی CA شما به مرورگرها اضافه شود — این معمولاً برای محیط‌های توسعه داخلی مناسب است، نه برای سرویس‌های عمومی.
  • سرویس‌دهنده‌های دیگری که از IP پشتیبانی می‌کنند: برخی از CAها ممکن است برای IP گواهی صادر کنند، اما Let’s Encrypt این کار را انجام نمی‌دهد و فرآیند و هزینهٔ متفاوتی خواهد داشت.
  • راهکارهای CDN / WAF (مثل Cloudflare): این خدمات می‌توانند ترافیک HTTPS را در لبه (edge) terminate کنند و در سمت origin بین شما و CDN ممکن است از گواهی خودامضا استفاده شود. این گزینه وابسته به سرویس سوم است و محدودیت‌ها و مزایای خاص خود را دارد.

نکات امنیتی و عملیاتی برای محیط‌های ابری (ParminCloud)

  • همیشه دسترسی SSH و پورت‌های مدیریتی را محدود کنید و از کلیدهای SSH استفاده کنید.
  • از مکانیزم‌های بک‌آپ (Backups & Snapshots) برای تهیه نسخهٔ پشتیبان از پیکربندی و داده‌ها استفاده کنید.
  • در صورت استفاده از چند سرور، می‌توانید گواهی را روی یک Load Balancer نصب کنید تا مدیریت گواهی‌ها ساده‌تر شود.
  • لاگ‌ها و اعلان‌های تمدید (renewal) را مانیتور کنید تا در صورت بروز خطا قبل از انقضای گواهی اقدام کنید.

منابع بیشتر

برای اطلاعات تکمیلی می‌توانید مستندات Certbot و Let’s Encrypt را مطالعه کنید.

جمع‌بندی

در این راهنما یاد گرفتید چگونه Certbot را نصب کنید، گواهی Let’s Encrypt را برای Apache روی Debian 11 دریافت و پیکربندی کنید و فرآیند تمدید خودکار را بررسی نمایید. اگر می‌خواهید سرویس عمومی شما با گواهی معتبر کار کند، نیاز به یک نام دامنه دارید؛ صدور گواهی برای آدرس IP عمومی توسط Let’s Encrypt پشتیبانی نمی‌شود.

 

 

 

از همراهی شما سپاسگزاریم. برای مطالعه بیشتر درباره مستندات محصولات ابری، معماری‌های مقیاس‌پذیر و بهینه‌سازی هزینه در محیط‌های ابری ParminCloud، به بخش منابع ما مراجعه کنید.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *