شما برای مطالعه این مقاله فقط 8 دقیقه وقت نیاز دارید

enable-ssl-with-lets-encrypt

آموزش ایمن کردن Nginx‌ در دبیان از طریق Let’s Encrypt SSL

4.5/5 - (2 امتیاز)

وبسایت شما برای حفظ اعتبار و رتبه خود در نتایج جستجو به امنیت نیاز دارد و اگر می خواهید به ساده ترین و کم هزینه ترین شکل ممکن گواهینامه SSL خود را دریافت و نصب کنید، Let’s Encrypt در کنار شماست. در صورتی که وب سرور وبسایت شما Nginx‌ است و سرور شما هم از توزیع های دبیان یا اوبونتو استفاده می کند، بدون شک با دنبال کردن مراحل ایمن کردن Nginx‌ در عرض چند دقیقه SSL خود را طور رایگان فعال خواهید کرد.

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

پس بهتر است وقت را از دست ندهیم و هر چه سریع تر این آموزش فوق العاده را شروع کنیم:

Let’s Encrypt چیست؟

Let’s Encrypt چیست

وقتی به فاکتورهای مهم در رتبه بندی سئو نگاه می کنیم، غیر ممکن است که اهمیت گواهینامه SSL را نادیده بگیریم. رمزگذاری SSL وبسایت باعث رتبه بندی بالاتر صفحات وبسایت و امنیت بهینه تر برای کاربران می شود ولی به خاطر یک سری مسائل و موانع، بعضی از صاحبان وبسایت نسبت به فعال سازی SSL بی میل هستند.

هزینه بالا و پروسه نصب دستی از مهم ترین این مسائل هستند که Let’s Encrypt پایانی برای همه آنهاست.

در واقع، Let’s Encrypt یک مرجع صدور گواهینامه است که مراحل دریافت و نصب گواهینامه های TLS/SSL را آسان تر می کنند و با فعال سازی HTTPS در وب سرور به کار خود خاتمه می دهد.

این پلتفرم قبل از صدور گواهینامه SSL، مالکیت دامنه را تایید می کند و برای این کار از کلاینت مخصوص خود استفاده می کند. این کلاینت روی هاست شما اجرا می شود و از اطلاعات موردنیاز خود یک فایل موقت یا توکن ایجاد می کند. بعد سرور اعتبار سنجی Let’s Encrypt وارد عمل می شود و یک درخواست HTTP ایجاد می کند تا فایل ایجاد شده توسط کلاینت بازیابی و تایید شود.

مزایای مهمی مثل هزینه رایگان، خودکارسازی پروسه ثبت و تمدید گواهینامه ها و امنیت بالا باعث شده است که این پلتفرم به عنوان یکی از بهترین گزینه ها برای ایمن کردن Nginx شناخته شود.

اگر نگران سازگاری گواهینامه SSL با مرورگرهای قدیمی و جدید هستید، بهتر است بدانید که Let’s Encrypt برای امضای گواهینامه های دیجیتال خود به IdenTrust متکی است که امضاهای ارائه شده توسط این پلتفرم در اکثر مرورگرهای اصلی پذیرفته می شوند. جا دارد به این نکته هم اشاره کنیم که گواهینامه های این پلتفرم به مدت 90 روز اعتبار دارند و در کل، توصیه می شود که هر 60 روز یک بار به طور خودکار گواهینامه SSL خود را تمدید کنید.

در نتیجه، اگر به فکر محافظت از وبسایت خود هستید و تصمیم گرفته اید که از SSL برای رمزگذاری اتصالات و داده های بین سرور و مرورگر استفاده کنید، ایمن کردن Nginx با Let’s Encrypt روش بسیاری مناسبی است که کارها را برای شما راحت تر می کند.

همچنین، اگر به دنبال راهکارهای مقرون به صرفه دیگری برای ارتقا عملکرد و امنیت وبسایت خود هستید، توصیه می کنیم خرید سرور مجازی لینوکس را هم در برنامه خود قرار دهید. مطمئن باشید که اگر از یک سرور قدرتمند و امن استفاده کنید و در کنار آن، راهکارهای امنیتی دیگری را وارد عمل کنید، اعتبار وبسایت شما به عالی ترین درجه ممکن خواهد رسید.

دیگر وقت آن است که مراحل فعال سازی SSL برای ایمن کردن Nginx را شروع کنیم که بررسی پیش نیازها، اولین قدم در این مسیر هستند:

پیش نیازهای ایمن کردن Nginx با Let’s Encrypt

  • یک سرور اختصاصی یا سرور مجازی لینوکس با توزیع دبیان (و اوبونتو 18.04 به بالا) مجهز به فایروال
  • کاربر غیرریشه با امتیازات sudo
  • یک دامنه ثبت شده
  • یک رکورد DNS مرتبط با نام دامنه و آدرس IP عمومی
  • نصب و راه اندازی Nginx

مراحل فعال سازی گواهینامه SSL

اگر تمام این مراحل را به طور کامل اجرا کنید، مطمئن باشید که پروسه ایمن کردن Nginx با Let’s Encrypt بدون هیچ خطایی تکمیل می شود:

  1. دانلود و نصب Certbot

Certbot کلاینت Let’s Encrypt است که برای فعال سازی خودکار HTTPS با استفاده از گواهی‌های Let’s Encrypt استفاده می شود.

قبل از هر کاری، اول سیستم repository محلی سیستم لینوکس خود را آپدیت کنید:

sudo apt update

بعد Certbot و پلاگین Nginx آن را نصب کنید:

sudo apt install certbot python3-certbot-nginx

الآن Certbot آماده استفاده است اما برای اینکه به طور کامل از عهده پیکربندی SSL برای وب سرور Nginx بربیاید، باید مراحل پیکربندی Nginx را تکمیل کنید.

  1. تایید فایل پیکربندی Nginx

برای اینکه Certbot بتواند SSL را به طور خودکار پیکربندی کند باید به بلوک سرور شما در پیکربندی Nginx دسترسی پیدا کند. این کار صرفاً جهت اعتبارسنجی انجام می شود و اگر اسم سروری که در Nginx ثبت شده است با اسم دامنه ای که درخواست گواهی SSL می دهید، مطابقت داشته باشد با مشکلی روبرو نخواهید شد.

در کل، اگر پروسه راه اندازی Nginx را با موفقیت پشت سر گذاشته باشید، یک بلوک سرور مخصوص با اسم دامنه شما تنظیم می شود که برای مشاهده آن می توانید از دستور زیر استفاده کنید:

sudo nano /etc/nginx/sites-available/example.com

خط server_name را پیدا کنید و مطمئن شوید که به صورت زیر مقدار دهی شده است:

server {

 ---
    server_name example.com www.example.com;
 ---

}

اگر اینگونه بود که فایل را ذخیره کنید و مستقیماً سراغ مرحله بعدی بروید.

در غیر اینصورت، اگر نیاز به ایجاد تغییراتی در فایل پیکربندی Nginx دارید، example.com موجود در خط server-name را با نام دامنه خود جایگزین کنید و بعد آن را ذخیره کنید و فایل را ببندید.

کلیک کنید  آموزش نصب NPM و Node.js در ویندوز سرور + معرفی کاربردها

برای تایید فایل پیکربندی جدید، ابتدا دستور زیر را اجرا کنید:

sudo nginx –t

اگر موقع اجرای این دستور با خطا مواجه شدید، فایل را دوباره باز کنید و اشتباهات تایپی یا خطاها را بررسی کنید تا اینکه بالاخره دستور بالا بدون هیچگونه خطایی تکمیل شود.

بعد از تایید این فایل، نوبت به بارگیری مجدد Nginx می رسد تا تغییرات جدید اعمال شوند. پس دستور زیر را اجرا کنید:

sudo systemctl reload nginx

بعد از تکمیل این مرحله، نوبت به آپدیت فایروال می رسد.

  1. تنظیم فایروال برای مجوز HTTPS

پس از نصب فایروال ufw نیاز به انجام یک سری تنظیمات دارید تا فایروال برای ترافیک رمزگذاری شده HTTPS مجاز باشد.

قبل از هر کاری بهتر است وضعیت فایروال خود را بررسی کنید:

sudo ufw status

اگر قبلاً ترافیک HTTPS را فعال نکرده باشید، خروجی این دستور به صورت زیر خواهد بود:

وضعیت فایروال

در کل، Nginx سه نوع پروفایل دارد که می توانید به عنوان قوانین جدید به فایروال اضافه کنید:

Nginx HTTP: پورت 80

Nginx HTTPS: پورت 443 (ترافیک رمزنگاری شده)

Nginx Full: پورت 80 و 443 ( دو پروفایل بالا به صورت یکجا)

برای ارائه مجوز لازم برای ترافیک HTTPS می توانید یکی از دو پروفایل Nginx HTTPS یا Nginx Full را به قوانین فایروال خود اضافه کنید.

اگر می خواهید از Nginx Full استفاده کنید، پس باید Nginx HTTP را حذف کنید چون دیگر نیازی به آن ندارید:

sudo ufw allow 'Nginx Full'

sudo ufw delete allow 'Nginx HTTP'

ولی برای اضافه کردن Nginx HTTPS، دیگر نباید کاری با Nginx HTTP داشته باشید چون به هر دوی آنها نیاز دارید:

sudo ufw delete allow 'Nginx HTTPS'

بهتر است دوباره وضعیت فایروال را بررسی کنید تا از مجوز ترافیک HTTPS مطمئن شوید:

sudo ufw status

وضعیت فایروال 2

دیگر وقت آن است که وارد مرحله اصلی شویم و از Certbot برای ایمن کردن Nginx با SSL استفاده کنیم.

  1. دریافت گواهینامه SSL

Certbot راه های مختلفی را برای دریافت گواهینامه SSL ارائه می دهد و افزونه Nginx که در مرحله اول نصب کردید، یکی از آنهاست. این افزونه کارهای مربوط به پیکربندی و بارگیری مجدد فایل پیکربندی را انجام می دهد.

برای استفاده از این افزونه، دستور زیر را اجرا کنید:

sudo certbot --nginx -d example.com -d www.example.com

دستور بالا، certbot را با استفاده از پلاگین nginx اجرا می کند و آپشن d هم برای تعیین اسم دامنه موردنظر لحاظ شده است.

اگر برای اولین بار است که Certbot را اجرا می کنید، یک ایمیل از شما خواسته می شود و بعد از آن هم باید با شرایط خدمات موافقت کنید.

بعد از اینکه این مراحل را طی کردید، certbot با سرور Let’s Encrypt ارتباط برقرار می کند. سرور Let’s Encrypt برای تایید دامنه موردنظر جهت ایمن کردن Nginx، برای شما یک چالش مشخص می کند تا مطمئن شود که دامنه تحت کنترل شماست.

در آخر، بعد از آپدیت فایل پیکربندی و بارگیری مجدد تنظیمات، certbot با نمایش یک پیام موفقیت آمیز به شما می گوید که گواهینامه های شما در کجا ذخیره شده اند:

پیام اجرای Cerbot

اکنون می توانید آدرس وبسایت خود را با \\:https چک کنید و به نشانگر امنیتی آن توجه کنید.

نماد قفل در وبسایت https بعد از ایمن کردن Nginx

نماد قفل به معنای این است که مراحل ایمن کردن Nginx با موفقیت انجام شده است و اگر سرور خود را با استفاده از SSL Labs تست کنید، نمره A می گیرد.

تست ssl

  1. خودکارسازی تمدید گواهینامه Let’s Encrypt

همانطور که قبلاً هم گفتیم، گواهینامه های Let’s Encrypt فقط برای 90 روز معتبر هستند و اگر نمی خواهید ریسک کنید، می توانید یک کران جاب ایجاد کنید تا تمدید گواهینامه را به صورت خودکار انجام دهد.

اول، با استفاده از دستور زیر فایل crontab را باز کنید:

crontab –e

بعد یک کران جاب جدید ایجاد کنید تا certbot را اجرا کند و اگر تشخیص دهد که گواهینامه در عرض 30 روز منقضی می شود، به طور خودکار آن را تمدید کند. حتی می توانید برنامه ریزی را به طور دقیق تر انجام دهید تا هر روز در یک زمان مشخص اجرا شود.

با دستور زیر، تعیین می کنید که این کار هر صبح ساعت 5 انجام شود:

0 5 * * * /usr/bin/certbot renew –quiet

بعد این فایل را ذخیره کرده و آن را ببندید. از این به بعد، پروسه تمدید و بارگیری گواهینامه ها به صورت خودکار انجام می شود.

البته خود certbot هم مجهز به یک تایمر است که هر دو روز یکبار بررسی های لازم را انجام می دهد و 30 روز مانده به اتمام تاریخ انقضا، تمدید گواهینامه ها را به صورت خودکار انجام می دهد.

با استفاده از دستور زیر می توانید وضعیت این تایمر را بررسی کنید:

sudo systemctl status certbot.timer

همچنین، اگر می خواهید پروسه تمدید را تست کنید می توانید از دستور زیر استفاده کنید:

sudo certbot renew --dry-run

اگر با خطایی مواجه نشدید، همه چیز مرتب است. certbot آماده ایمن کردن Nginx است. اگر فرآیند تمدید خودکار به مشکل بربخورد، Let’s Encrypt یک ایمیل برای شما می فرستد تا به شما هشدار دهد که انقضای گواهی شما در حال اتمام است.

کلام آخر

Let’s Encrypt یک پلتفرم عالی برای فعال سازی گواهینامه SSL است که اگر از وب سرور Nginx استفاده می کنید، مطمئناً آموزش های این مقاله به شما کمک می کند که گواهینامه SSL وبسایت خود را بدون هیچ نگرانی فعال کنید. Certbot به عنوان کلاینت Let’s Encrypt نه تنها پیکربندی SSL را راحت تر می کند بلکه این امکان را به شما می دهد که گواهینامه ها را به صورت خودکار تمدید کنید.

از اینکه تا انتهای مقاله با ما همراه بودید، از شما متشکریم. امیدواریم که مطالعه این مقاله برای شما مفید واقع شده باشد. در صورت داشتن هرگونه سوال، درخواست و نیاز به راهنمایی، می توانید با ثبت نظر خود، با ما وارد ارتباط شوید تا هر چه زودتر به شما پاسخ دهیم.

سوالات متداول:

بله، برای اینکار می توانید از تایمر Certbot استفاده کنید یا اینکه یک کران جاب جدید ایجاد کنید.

مطالب مشابهی که شاید علاقمند باشید

من زهرا پیرجانی دانشجوی رشته نرم افزار هستم. علاقه ای که به یادگیری مطالب جدید دارم باعث شد که انگیزم برای فعالیت در حوزه تولیدمحتوا بیشتر شود. تمام تلاشم این است که با درک کامل موضوع، محتوایی ساده و کامل تهیه کنم که برای همه علاقمندان مفید و کاربردی باشد. یادگیری مطالب جدید و آموزش اونها به بقیه، بهترین کاری هست که می توانم برای رشد خودم و همچنین کمک به رشد علاقمندان به مباحث مورنظر انجام بدم.

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید