آموزش نصب و پیکربندی Nginx با Let’s Encrypt در Debian 12 برای امنیت وبسایت
۱۴ اسفند ۱۴۰۳
امنیت وبسایت یکی از مهمترین بخشهای مدیریت هر سروری است و هیچ چیز به اندازه یک گواهی SSL معتبر نمیتواند ارتباطات شما را برای مدیریت این بخش ها ایمن تر کند. Let’s Encrypt یک ارائهدهنده گواهی SSL رایگان است که به شما کمک میکند تا بدون هیچ هزینه و دردسری سایت خود را از HTTP
به HTTPS
ارتقا دهید.
برای این کار از Certbot
استفاده خواهیم کرد، ابزاری که فرایند دریافت، نصب و تمدید خودکار گواهی SSL را برای Nginx در Debian 12
ساده میکند. این آموزش را مرحلهبهمرحله انجام دهید و یاد بگیرید که چگونه بتوانید وبسایت خود را ایمن کنید و نگران انقضای گواهی هم نباشید!
در ادامه با آن ها آشنا خواهید شد:
- پیش نیازها
- مرحله اول: نصب Certbot
- مرحله دوم: بررسی تنظیمات Nginx
- مرحله سوم: اجازه دادن به ترافیک HTTPS در فایروال
- مرحله چهارم: دریافت گواهی SSL با Certbot
- مرحله پنجم: دریافت گواهی SSL (ادامه)
- مرحله ششم: بررسی تمدید خودکار گواهی SSL
- سوالات متدوال
- جمع بندی
پیش نیازها:
برای اجرای این آموزش، به موارد زیر نیاز پیدا خواهید کرد:
- یک سرور Debian 12: که طبق تنظیمات اولیه راهاندازی شده باشد و شامل کاربر غیرریشه با دسترسی
sudo
و فایروال فعال باشد. - یک دامنه ثبتشده: در این آموزش از
example.com
استفاده خواهیم کرد. - تنظیم دو رکورد DNS برای سرور:
- A Record: که
example.com
را به آیپی عمومی سرور متصل کند. - A Record: که
www.example.com
را به آیپی عمومی سرور متصل کند.
- A Record: که
- نصب Nginx: طبق راهنمای نصب Nginx در Debian 12 و تنظیم یک
Server Block
مخصوص دامنه.
نکته مهم: به جای فایل پیشفرض Nginx، از یک فایل پیکربندی مجزا برای دامنه خود استفاده کنید. این کار باعث کاهش خطاها و داشتن یک پیکربندی پیشفرض بهعنوان نسخه پشتیبان میشود. در ادامه، نحوه نصب و پیکربندی Certbot را بررسی خواهیم کرد.

مرحله اول: نصب Certbot
برای دریافت گواهی SSL از Let’s Encrypt، ابتدا باید Certbot را بر روی سرور تان نصب کنید. این ابزار فرایند دریافت و پیکربندی گواهی را خودکار میکند.
برای نصب Certbot و افزونه Nginx، این دستور را اجرا کنید.
sudo apt install certbot python3-certbot-nginx
پس از نصب، Certbot شما آماده استفاده است، اما قبل از آن باید تنظیمات Nginx را بررسی خواهیم کرد.
مرحله دوم: بررسی تنظیمات Nginx
Certbot برای پیکربندی خودکار SSL، باید بتواند server block
درست را در تنظیمات Nginx پیدا کند. این کار را با جستجوی server_name
مرتبط با دامنه انجام میدهد.
اگر قبلاً یک server block
برای دامنه خود ساختهاید، فایل تنظیمات شما باید در مسیر زیر قرار داشته باشد.
sudo nano /etc/nginx/sites-available/example.com
خطی مشابه زیر پیدا کنید.
server_name example.com www.example.com;
✅ اگر این خط وجود دارد، ادامه دهید.
❌ اگر وجود ندارد، آن را اضافه کنید و فایل را ذخیره کنید.
سپس، برای بررسی صحیح بودن تنظیمات، این دستور را اجرا کنید.
sudo nginx -t
اگر خطایی دریافت کردید، فایل را باز کرده و مشکلات احتمالی (مانند غلطهای املایی) را برطرف کنید. پس از اطمینان از صحت تنظیمات وارد شده تان، Nginx را دوباره بارگذاری کنید.
sudo systemctl reload nginx
اکنون Certbot میتواند بلاک سرور صحیح را پیدا کرده و بهروزرسانی کند.
مرحله سوم: اجازه دادن به ترافیک HTTPS در فایروال
اگر UFW را فعال کرده باشید، باید تنظیمات آن را برای پذیرش ترافیک HTTPS
نیز تغییر دهید. هنگام نصب Nginx، پروفایلهای مرتبط بهصورت خودکار در UFW
ثبت میشوند.
ابتدا وضعیت فعلی فایروال را بررسی کنید.
sudo ufw status
معمولاً خروجی به این شکل است، که نشان میدهد فقط HTTP
مجاز است.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

برای فعال کردن HTTPS
، این دستورات را اجرا کنید.
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
دوباره وضعیت را بررسی کنید.
sudo ufw status
خروجی باید شبیه خروجی زیر باشد.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
حالا فایروال شما آماده پذیرش ترافیک امن HTTPS است. 🚀
مرحله چهارم: دریافت گواهی SSL با Certbot
Certbot چند روش مختلف برای دریافت گواهی SSL
را ارائه میدهد. در این بخش ما از افزونه Nginx استفاده خواهیم کرد که بهطور خودکار تنظیمات Nginx را پیکربندی و ریستارت میکند.
دستور زیر را اجرا کنید.
sudo certbot --nginx -d example.com -d www.example.com
توضیحات:
--nginx
باعث میشود Certbot بهصورت خودکار تنظیمات Nginx را بهروزرسانی کند.-d example.com -d www.example.com
دامنههایی را مشخص میکند که برای آنها گواهی صادر میشود.
اگر اولین بار است که Certbot را اجرا میکنید:
- باید ایمیل خود را وارد کنید.
- با شرایط سرویسدهی موافقت کنید.
سپس، Certbot با سرور Let’s Encrypt ارتباط برقرار میکند و با اجرای یک چالش، مالکیت دامنه را تأیید میکند.
در نهایت، تنظیمات Nginx بهروزرسانی شده و سرویس ریستارت میشود. مسیر ذخیره گواهیها نیز نمایش داده خواهد شد.
مرحله پنجم: دریافت گواهی SSL
پس از اجرای دستور Certbot، اگر همهچیز درست باشد، خروجی شما باید مانند خروجی زیر باشد.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2022-08-08. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

حالا گواهی SSL شما نصب شده و فعال است!
مرورگر خود را باز کنید و سایت را با https://example.com
بررسی کنید. باید قفل امنیتی در کنار آدرس سایت نمایش داده شود.
برای تست امنیت، میتوانید از ابزار SSL Labs Server Test
استفاده کنید که معمولاً به شما نمره A
میدهد.
مرحله ششم: بررسی تمدید خودکار گواهی SSL
گواهی Let’s Encrypt فقط ۹۰ روز اعتبار دارد، اما Certbot بهطور خودکار تمدید را انجام میدهد. این کار با یک systemd timer
انجام میشود که روزانه دو بار اجرا میشود.
برای بررسی وضعیت تایمر Certbot، این دستور را اجرا کنید.
sudo systemctl status certbot.timer
خروجی باید مشابه خروجی زیر باشد.
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2022-08-08 19:05:35 UTC; 11s ago
Trigger: Tue 2022-08-09 07:22:51 UTC; 12h left
Triggers: ● certbot.service
🔹 مطالعه کنید: نحوه تنظیم لاگ و rotation در Nginx در سرور مجازی لینوکس
برای تست تمدید دستی گواهیها بدون ایجاد تغییر، از حالت آزمایشی (dry-run)
استفاده کنید.
sudo certbot renew --dry-run
اگر خطایی مشاهده نکردید، یعنی همهچیز به درستی کار میکند و Certbot بهطور خودکار گواهی شما را تمدید کرده و Nginx را ریستارت خواهد کرد.
اگر فرایند تمدید خودکار ناموفق باشد، Let’s Encrypt به ایمیلی که وارد کردید، هشدار انقضای گواهی را ارسال میکند.
“حالا سایت شما با HTTPS امن شده و بهطور خودکار گواهی آن تمدید خواهد شد!”
سوالات متدوال:
در ادامه به سوالاتی که امکان دارد برای شما در هنگام مطالعه این مقاله پیش آمده باشد خواهیم پرداخت.
چرا باید از گواهی SSL استفاده کرد؟
گواهی SSL باعث میشود ارتباطات بین سرور و مرورگر بهصورت امن و رمزگذاریشده انجام شود. این امر از شنود و تغییر اطلاعات جلوگیری کرده و برای سئو و اعتبار سایت شما بسیار مهم است.
آیا Certbot رایگان است؟
بله، Certbot یک ابزار رایگان است که برای دریافت و نصب گواهیهای SSL از Let’s Encrypt استفاده میشود.
چگونه میتوان مطمئن شد که گواهی SSL بهدرستی نصب شده است؟
بعد از نصب گواهی SSL، میتوانید سایت خود را با https://
باز کنید و در مرورگر نماد قفل را ببینید. همچنین، برای بررسی بیشتر، میتوانید از ابزار SSL Labs Server Test
استفاده کنید.
گواهی SSL هر چند وقت یکبار باید تمدید شود؟
گواهیهای SSL از Let’s Encrypt هر ۹۰ روز منقضی میشوند. اما ابزار Certbot بهطور خودکار گواهی شما را تمدید میکند.
آیا Certbot بهطور خودکار گواهیهای SSL را تمدید میکند؟
بله، Certbot یک systemd timer
دارد که دو بار در روز بررسی میکند که آیا گواهی SSL شما نیاز به تمدید دارد یا نه و در صورت لزوم آن را تمدید میکند.

چگونه میتوان گواهی SSL خود را بهطور دستی تمدید کرد؟
برای تمدید دستی گواهی SSL، کافی است دستور زیر را اجرا کنید.
sudo certbot renew
“شاید به دنبال این مطلب بودهاید: نحوه میزبانی وبسایت با استفاده از Cloudflare و Nginx در اوبونتو 22.04“
آیا برای استفاده از Let’s Encrypt به تنظیمات خاصی DNS نیاز دارد؟
بله، شما باید مطمئن شوید که رکوردهای A
برای دامنه شما به درستی به آدرس IP سرور شما اشاره میکنند تا Certbot بتواند گواهی SSL را برای دامنه شما دریافت کند.
آیا میتوان چند دامنه را با یک گواهی SSL از Let’s Encrypt امن کرد؟
بله، میتوانید از یک گواهی SSL برای چندین دامنه استفاده کنید. کافی است هنگام اجرای Certbot از گزینه -d
برای اضافه کردن دامنههای اضافی استفاده کنید، مانند:
sudo certbot --nginx -d example.com -d www.example.com
آیا Certbot از Nginx بهطور خودکار پشتیبانی میکند؟
بله، Certbot بهطور خودکار تنظیمات Nginx را پیکربندی کرده و سرور شما را پس از نصب گواهی SSL بهروز میکند.
آیا میتوان از Let’s Encrypt برای سایتهای تجاری استفاده کرد؟
بله، گواهیهای SSL از Let’s Encrypt برای استفاده در هر نوع سایت، از جمله سایتهای تجاری و فروشگاهی، کاملاً معتبر و مطمعن هستند.
جمع بندی
در این مقاله، نحوه امنسازی وبسرور Nginx در Debian 12 با استفاده از گواهی SSL رایگان از Let’s Encrypt را آموخته اید. ابتدا Certbot و افزونه Nginx آن را نصب کرده و گواهی SSL برای دامنه خود دریافت کنید. سپس، تنظیمات سرور بلاکهای Nginx را بررسی و بهروزرسانی کنید و فایروال را برای اجازه دادن به ترافیک HTTPS تنظیم کنید. در نهایت، فرآیند تمدید خودکار گواهیهای SSL را بررسی کرده و اطمینان حاصل کنید که Certbot به صورت خودکار گواهیها را هر ۹۰ روز تمدید کند. این مراحل به شما کمک میکند تا سایت خود را بهراحتی امن کرده و از اتصال رمزگذاریشده HTTPS بهرهمند شوید.