نصب SSL در Apache با Let’s Encrypt امکان ارائهٔ سایت از طریق HTTPS را فراهم میکند. این آموزش برای Ubuntu 22.04 و Apache مستقلی است که اختیار تنظیمات آن را دارید. در سرور دارای کنترلپنل، گواهی را ابتدا از ابزار همان پنل مدیریت کنید.
پیشنیاز نصب SSL در Apache
یک نام دامنهٔ واقعی، دسترسی sudo و وبسایت HTTP فعال لازم است. رکورد A و در صورت وجود AAAA باید به سرور درست برسند. اگر www قرار است در گواهی باشد، آن نام هم باید پاسخ معتبر داشته باشد؛ فقط داشتن نام اصلی کافی نیست.
برای اعتبارسنجی HTTP-01 دسترسی پورت ۸۰ از اینترنت ضروری است. استفاده از HTTPS نیز به پورت ۴۴۳ نیاز دارد. دسترسی لازم را در فایروال محلی و شبکه بررسی کنید و هنگام اصلاح قواعد، دسترسی مدیریتی SSH را حفظ کنید.
VirtualHost مربوط به دامنه را پیدا کنید
sudo apache2ctl -S
sudo apache2ctl configtest
فرمان اول نگاشت میزبانهای مجازی را نشان میدهد. ServerName باید نام اصلی سایت باشد و ServerAlias فقط نامهای اضافی واقعی را پوشش دهد. خطای تنظیمات را پیش از دریافت گواهی برطرف کنید؛ آزمون پیکربندی Apache باید موفق شود.
اگر فایل سایت را اصلاح کردهاید، بعد از موفقیت آزمون آن را بارگذاری مجدد کنید. مسیر فایل را از خروجی و تنظیمات واقعی سرور تشخیص دهید و یک نام نمونه را روی فایل دیگری ننویسید.
sudo systemctl reload apache2
انتخاب روش نصب Certbot
ابتدا ببینید Certbot از قبل نصب شده است یا نه. اگر بستهٔ موجود گواهیها و تمدید را مدیریت میکند، نصب دوم یا حذف فوری بستهٔ قبلی میتواند برنامهٔ نگهداری را مختل کند. یک روش نصب مشخص را نگه دارید و مسیر اجرای آن را بدانید.
command -v certbot
certbot --version
systemctl list-timers --all
برای نصب تازه، در صورت آماده بودن snapd، دستور رسمی Certbot برای Apache چنین است:
sudo snap install --classic certbot
فرمانهای بعدی عمداً مسیر کامل نسخهٔ snap را دارند. در نصب غیر snap باید مسیر همان نسخهٔ موجود را به کار ببرید؛ دو نسخه را بدون برنامهٔ مهاجرت مخلوط نکنید.
صدور گواهی و تنظیم HTTPS
example.com را با دامنهٔ خود جایگزین کنید. درخواست را محدود به نامهایی نگه دارید که DNS و سایت فعال آنها بررسی شدهاند:
sudo /snap/bin/certbot --apache -d example.com
افزونهٔ Apache میتواند گواهی را دریافت و پیکربندی وبسرور را تنظیم کند. اطلاعات تماس، شرایط سرویس و گزینههای تعاملی را با دقت بخوانید. اگر www آماده است، میتوانید -d www.example.com را نیز به همان درخواست اضافه کنید.
بعد از اجرای موفق، سایت را با HTTPS باز کنید. نامهای گواهی و تاریخ اعتبار باید درست باشند. دوباره آزمون پیکربندی Apache را اجرا کنید و مطمئن شوید دامنهٔ دیگری به VirtualHost اشتباه هدایت نشده است.
کنترل تغییر مسیر و فایلهای صفحه
نسخهٔ HTTP را هم امتحان کنید و تغییر مسیر مورد نیاز را بررسی کنید. همهٔ فایلهای CSS، JavaScript و تصویر باید بدون هشدار محتوای مخلوط بارگذاری شوند. مشکل برنامه یا پیوند داخلی را صرفاً با تکرار صدور گواهی حل نمیکنید.
پشت CDN، ارتباط کاربر با لبه و ارتباط لبه با مبدأ را جدا ارزیابی کنید. همچنین HTTPS امنیت کامل برنامه یا رتبهٔ مشخصی در آزمون امنیتی را تضمین نمیکند؛ وظیفهٔ اصلی آن حفاظت از انتقال داده است.
آزمون تمدید و پایش گواهی
sudo /snap/bin/certbot renew --dry-run
systemctl list-timers --all
آزمون اول باید بدون خطا پایان یابد. در فهرست زمانبندها، مورد مربوط به روش نصب Certbot و اجرای بعدی آن را بررسی کنید. اگر زمانبند درست موجود است، کرون دیگری برای همان کار نسازید. انقضا و سیاست تمدید را از دادهٔ واقعی بخوانید، نه یک فاصلهٔ ثابت در آموزش قدیمی.
از ژوئن ۲۰۲۵ ایمیل یادآوری انقضا از سوی Let’s Encrypt ارسال نمیشود. خطای تمدید و زمان باقیماندهٔ گواهی را با ابزار پایش مستقل دنبال کنید.
علتهای رایج خطای صدور
رکورد اشتباه IPv6، بسته بودن پورت ۸۰، نام اشتباه VirtualHost یا پاسخ نامعتبر مسیر چالش را بررسی کنید. طبق توضیح انواع چالش، wildcard به DNS-01 نیاز دارد. تغییر دستی TXT بدون طراحی تمدید، به معنی تمدید خودکار آینده نیست.
مطالعهٔ مرتبط
بازبینی فنی: ۱۴ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شدهاند.