
شید زمانی که داری به آدرس یه سایت نگاه می کنی، ببینی کنارش یه قفل سبز ظاهر شده اما این یعنی چی؟
اون قفل نشون دهنده که اتصال بین مرورگر و سایت از طریق HTTPS رمزنگاری شده و امنه. اما واقعیت اینه که فعال کردن HTTPS فقط نصب یه گواهی SSL ساده نیست؛ اگه درست انجام نشه، ممکنه آسیب پذیری هایی به وجود بیاد که حتی امنیت سایت رو تهدید کنه.
تو این مقاله، یاد می گیری چطور با پیکربندی HTTPS با Let’s Encrypt، یکی از محبوب ترین و رایگان ترین سرویس های صدور گواهی SSL، سایت خودت رو روی سرور Nginx در سیستم عامل های Ubuntu یا Debian کاملاً امن کنی. این رهنما رو جوری نوشتیم که در کنار اینکه برای تازه کارا مناسب باشه، بلکه مدیران سیستم توسعه دهنده های حرفه ای هم بتونن به صورت حرفه ای و کاملا کاربردی ازش استفاده کنن.
چرا HTTPS و SSL مهمن؟
🔹 اعتمادسازی برای کاربران
نشان دادن قفل سبز باعث میشه کاربران با اطمینان بیشتری سایتت رو استفاده کنن.
🔹 بهتر شدن رتبه سئو
گوگل رسماً اعلام کرده که HTTPS یکی از عوامل موثر در رتبه بندی سایت هاست.
🔹 محافظت در برابر حملات MITM
حملات مرد میانه رو (Man-In-The-Middle) که اطلاعات کاربران رو به سرقت میبرن، جلوگیری میکنه.
نکات فنی که باید بدونی
1- پروتکل TLS همیشه در حال به روزرسانیه و نسخه های جدیدتر امنیت و سرعت بهتری فراهم می کنن.
2- اگه میخوای مرورگرت همیشه به HTTPS سایتت وصل شن، HSTS رو فعال کن.
3- برای اینکه از امن بودن ارتباطات قبلیتون مطمئن بشید، حتی اگه کلید خصوصی لو بره، از Perfect Forward Secrecy استفاده کن.
4- اشتباه HTTPS میتونه باعث ایجاد آسیب پذیری هایی مثل حملات downgrade یا استفاده از الگوریتم های رمزنگاری ضعیف بشه. پس فقط فعال کردن HTTPS کافی نیست، باید کانفیگ امنیتی رو هم بهینه کنی.
چرا Let’s Encrypt انتخاب اوله؟
- کاملاً رایگان و بدون محدودیت در تعداد گواهی ها
- تمدید خودکار و راحت گواهی ها با ابزار Certbot
- پشتیبانی گسترده از مرورگرها و دستگاه ها
- نصب و راه اندازی ساده حتی برای مبتدیان
مراحل پیکربندی HTTPS روی Nginx
پیش نیازها
✔ سرور با اوبونتو یا دبیان
✔ دامنهای که به IP سرور اشاره دارد
✔ بلاک سرور (Server Block) مناسب در Nginx برای دامنه
مرحله اول: نصب Certbot و پلاگین Nginx
Certbot ابزاریه که Let’s Encrypt برای گرفتن گواهی SSL راحت و خودکار پیشنهاد می کنه. اگه با Nginx کار میکنی، باید پلاگین Nginx رو هم نصب کنی:
sudo apt update sudo apt install certbot python3-certbot-nginx
‼️ نکته امنیتی: مطمئن شو فقط از مخازن رسمی یا منابع معتبر نصب می کنی.
مرحله دوم: بررسی پیکربندی بلاک سرور
توی مسیر /etc/nginx/sites-available/ فایل مربوط به دامنه ات رو باز کن و مطمئن شو server_name به درستی ست شده:
server_name example.com www.example.com;
سپس برای تست پیکربندی:
sudo nginx -t
و در صورت نبود خطا:
sudo systemctl reload nginx
❗️ نکته: اگه فایل بلاک سرور نداری یا شک داری، می تونی از فایل پیش فرض /etc/nginx/sites-enabled/default کمک بگیری.
مرحله سوم: باز کردن پورت
اگه UFW فعاله، دستور زیر رو وارد کن:
sudo ufw allow 'Nginx Full' sudo ufw delete allow 'Nginx HTTP' sudo ufw status
مرحله چهارم: فعال سازی HTTPS
وقتشه که گواهی رو بگیری. فقط کافیه دامنه ات رو جایگزین کنی:
sudo certbot --nginx -d example.com -d www.example.com
- ایمیلت رو وارد کن
- قوانین Let’s Encrypt رو بپذیر
- وقتی پرسید که می خوای ترافیک HTTP به HTTPS ریدایرکت بشه، حتماً تایید کن
بعد از اتمام، Certbot خودش فایل های کانفیگ رو آپدیت و سرور رو ری لود میکنه.
مرحله پنجم: تست فعال بودن HTTPS
مرورگر رو باز کن و برو به:
https://example.com
اگه قفل سبز رو دیدی و مرورگر هشدار نداد، یعنی کار درست انجام شده.
مرحله ششم: بررسی تمدید خودکار گواهی SSL
گواهی های Let’s Encrypt فقط ۹۰ روزه هستن، اما نگران نباش. Certbot به صورت خودکار یه job توی cron می ذاره که تمدید انجام بشه. برای تست دستی تمدید:
sudo certbot renew --dry-run
مشکلات رایج + راه حل ها
مشکل | دلیل | راه حل |
گواهی نصب نمیشه | بلاک سرور اشتباهه یا پورت 80 بسته است | بررسی پیکربندی Nginx و فایروال |
سایت بعد از نصب SSL لود نمیشه | به در ستی ریدایرکت نشده یا پروت 443 بسته است | بررسی کانفیگ Nginx و دستورات ufw |
ارور Too_ Many_Requests | زیاد تلاش کردی گواهی بگیری | صبر کن یا توی sandbox تست کن |
جمع بندی
اگه تا اینجا اومدی، تبریک میگم. الان سایتت به لطف پیکربندی HTTPS با Let’s Encrypt برای Nginx کاملاً امنه و HTTPS فعاله. نه تنها امنیتت بالاتر رفته، بلکه سئوی سایتت هم بهتر شده.
اما کار رو فقط با نصب گواهی تموم شده فرض نکن؛ بهتره همیشه سرور رو به روز نگه داری، مخصوصاً ابزار Certbot و وب سرور Nginx رو.
اگه سوالی داشتی یا خواستی به مرحله های پیشرفته تری مثل HSTS، TLS 1.3 یا بازطراحی تنظیمات امنیتی بپردازی، خوشحال میشیم راهنماییت کنیم!
خیر، استفاده از Let’s Encrypt کاملاً رایگان است.
با باز کردن سایت با https:// و مشاهده قفل سبز در مرورگر میتونی مطمئن شی.