در دنیای امروز، امنیت وب یک ضرورت مطلق است. با رشد روزافزون تهدیدات آنلاین، استفاده از پروتکل HTTPS و گواهینامههای SSL/TLS دیگر یک انتخاب لوکس نیست، بلکه پایهای برای جلب اعتماد کاربران و بهبود جایگاه وبسایت شما در موتورهای جستجو محسوب میشود. Let’s Encrypt، به عنوان یک مرجع صدور گواهینامه رایگان و متنباز، این فرآیند حیاتی را برای همه قابل دسترس کرده است. در کنار آن، Certbot ابزاری قدرتمند است که نصب و مدیریت این گواهینامهها را بر روی وبسرورهای مختلف، از جمله Nginx، به سادگی هر چه تمامتر ممکن میسازد.
این مقاله یک راهنمای جامع و گامبهگام برای نصب و پیکربندی Let’s Encrypt با استفاده از Certbot بر روی وبسرور Nginx را ارائه میدهد. این آموزش با هدف پوششدادن کاربران با سطوح مختلف دانش فنی و توزیعهای مختلف لینوکس (مانند اوبونتو و سنتاواس) طراحی شده است تا بتوانید به آسانی امنیت وبسایت خود را تأمین کنید.
پیشنیازهای نصب Let’s Encrypt با Certbot
پیش از شروع، مطمئن شوید که موارد زیر را آماده کردهاید:
- **دسترسی SSH:** به سرور لینوکس خود (Ubuntu, CentOS, Debian) از طریق SSH دسترسی دارید.
- **نصب و پیکربندی Nginx:** وبسرور Nginx بر روی سرور شما نصب شده و حداقل یک Server Block (یا Virtual Host) برای دامنهای که میخواهید برای آن SSL نصب کنید، پیکربندی شده باشد و از پورت 80 (HTTP) قابل دسترسی باشد.
- **دسترسی دامنه:** دامنه یا سابدامین مورد نظر شما (مثلاً
yourdomain.com
یاwww.yourdomain.com
) باید به آدرس IP عمومی سرور شما اشاره کند. این مرحله برای تأیید اعتبار دامنه توسط Let’s Encrypt ضروری است. - **پیکربندی فایروال:** پورتهای 80 (HTTP) و 443 (HTTPS) در فایروال سرور شما (مانند UFW یا firewalld) باز باشند.
مراحل نصب و پیکربندی Let’s Encrypt با Certbot روی Nginx
مرحله 1: نصب Certbot
نصب Certbot بسته به توزیع لینوکس شما متفاوت است. دستورات زیر را متناسب با سیستم عامل خود اجرا کنید:
برای اوبونتو (Ubuntu)
برای نصب Certbot در اوبونتو، ابتدا مخزن PPA مربوط به Certbot را اضافه کرده و سپس بسته python3-certbot-nginx
را نصب کنید:
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install python3-certbot-nginx
برای سنتاواس (CentOS) و ردهت (RHEL)
در CentOS، ابتدا مخزن EPEL را نصب کرده و سپس بسته certbot-nginx
را نصب کنید:
sudo yum install epel-release
sudo yum install certbot-nginx
برای دبیان (Debian)
در دبیان، بستههای Certbot را از مخازن اصلی نصب کنید:
sudo apt update
sudo apt install certbot python3-certbot-nginx
مرحله 2: پیکربندی Nginx Server Block
Certbot برای تأیید مالکیت دامنه نیاز دارد که یک Server Block فعال برای دامنه شما بر روی پورت 80 (HTTP) وجود داشته باشد. مطمئن شوید که فایل پیکربندی Nginx شما (معمولاً در /etc/nginx/sites-available/yourdomain.com
یا /etc/nginx/conf.d/yourdomain.com.conf
) شامل یک Server Block مشابه زیر برای دامنه شما باشد:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com; # دامنه/سابدامنههای خود را جایگزین کنید
root /var/www/yourdomain.com/html; # مسیر ریشه وبسایت شما
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
پس از ایجاد یا ویرایش فایل پیکربندی، Nginx را بررسی و راهاندازی مجدد کنید تا تغییرات اعمال شوند:
sudo nginx -t
sudo systemctl reload nginx
مرحله 3: دریافت گواهینامه SSL با Certbot
اکنون که Certbot نصب شده و Nginx آماده است، میتوانید گواهینامه SSL خود را دریافت کنید. Certbot به طور خودکار Nginx را برای استفاده از SSL پیکربندی میکند:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
در این دستور، yourdomain.com
و www.yourdomain.com
را با دامنه اصلی و سابدامنههای خود جایگزین کنید. Certbot از شما سوالاتی خواهد پرسید:
- **آدرس ایمیل:** برای دریافت اطلاعیههای مربوط به گواهینامه و تمدیدها.
- **شرایط خدمات Let’s Encrypt:** برای قبول شرایط و قوانین.
- **تغییر مسیر HTTP به HTTPS:** Certbot به شما امکان میدهد ترافیک HTTP را به طور خودکار به HTTPS هدایت کنید. انتخاب این گزینه (معمولاً گزینه 2: Redirect) به شدت توصیه میشود تا از امنیت کامل وبسایت اطمینان حاصل کنید.
پس از اتمام موفقیتآمیز، Certbot پیامی مبنی بر اتمام موفقیتآمیز دریافت گواهینامه و آدرس فایلهای گواهینامه را نمایش میدهد.
مرحله 4: تنظیم تمدید خودکار گواهینامه
گواهینامههای Let’s Encrypt 90 روز اعتبار دارند. برای حفظ امنیت وبسایت خود، لازم است آنها را قبل از اتمام این دوره تمدید کنید. خوشبختانه، Certbot قابلیتی برای تمدید خودکار گواهینامه ارائه میدهد.
بستههای Certbot معمولاً یک سرویس systemd timer
یا یک کرانجاب (cron job) را نصب میکنند که به طور خودکار certbot renew
را دو بار در روز اجرا میکند. این دستور فقط در صورت نیاز (یعنی وقتی گواهینامه نزدیک به انقضا باشد) تمدید را انجام میدهد.
برای اطمینان از عملکرد صحیح تمدید خودکار، میتوانید یک تست خشک (Dry Run) انجام دهید:
sudo certbot renew --dry-run
اگر این دستور بدون خطا اجرا شود، به این معنی است که تمدید خودکار به درستی کار خواهد کرد.
بررسی وضعیت تمدید خودکار (برای سیستمهای Systemd مانند Ubuntu 16.04+, Debian 8+, CentOS 7+)
sudo systemctl status certbot.timer
اگر میخواهید فرکانس تمدید را تغییر دهید یا به صورت دستی کرانجاب تنظیم کنید (که کمتر توصیه میشود، زیرا certbot.timer
مدیریت بهتری دارد)، میتوانید با sudo crontab -e
و اضافه کردن خط زیر این کار را انجام دهید:
0 */12 * * * root certbot -q renew
این خط Certbot را هر 12 ساعت اجرا میکند تا بررسی کند آیا گواهینامهای نیاز به تمدید دارد یا خیر.
مرحله 5: تأیید نصب و تست SSL
برای اطمینان از اینکه گواهینامه SSL به درستی نصب شده و کار میکند:
- مرورگر خود را باز کرده و به آدرس
https://yourdomain.com
(دامنه خود را جایگزین کنید) بروید. باید علامت قفل سبز رنگ در نوار آدرس را مشاهده کنید، که نشاندهنده اتصال امن است. - از ابزارهای آنلاین بررسی SSL مانند SSL Labs SSL Test استفاده کنید. با وارد کردن دامنه خود، میتوانید گزارشی جامع از پیکربندی SSL سرور خود دریافت کنید و از عدم وجود مشکلات اطمینان حاصل کنید.
عیبیابی رایج
- **خطای اتصال به Certbot (Can’t connect to Certbot):** مطمئن شوید که Nginx در حال اجرا است و server block دامنه شما به درستی برای پورت 80 پیکربندی شده است.
- **مشکلات فایروال (Firewall Issues):** اگر پورتهای 80 و 443 باز نباشند، Certbot نمیتواند دامنه شما را تأیید کند یا کاربران نمیتوانند به وبسایت شما دسترسی پیدا کنند. از دستوراتی مانند
sudo ufw status
(برای Ubuntu) یاsudo firewall-cmd --list-all
(برای CentOS) برای بررسی وضعیت فایروال استفاده کنید. - **خطاهای پیکربندی Nginx:** هرگونه خطای نحوی در فایلهای پیکربندی Nginx میتواند مانع از شروع یا راهاندازی مجدد Nginx شود. همیشه قبل از راهاندازی مجدد Nginx، با
sudo nginx -t
از صحت پیکربندی اطمینان حاصل کنید. - **مشکلات DNS:** اگر دامنه شما به درستی به آدرس IP سرور اشاره نکند، Certbot نمیتواند مالکیت دامنه را تأیید کند. از ابزارهایی مانند
dig
یاnslookup
برای بررسی رکوردهای DNS دامنه خود استفاده کنید.
نتیجهگیری
با دنبال کردن این راهنمای جامع، شما توانستهاید گواهینامه SSL رایگان Let’s Encrypt را با استفاده از Certbot بر روی وبسرور Nginx خود نصب و پیکربندی کنید. این اقدام نه تنها امنیت ارتباطات وبسایت شما را به طور چشمگیری افزایش میدهد، بلکه به بهبود اعتبار وبسایت شما در نگاه کاربران و موتورهای جستجو کمک شایانی میکند. با گواهینامههای SSL/TLS، شما قدمی بزرگ در جهت ایجاد یک فضای وب امنتر و قابل اعتمادتر برداشتهاید.
دیدگاه