نوشته های یک برنامه نویس

تجربیات شخصی محمد باقری نسب
محمد باقری نسب

نوشته های یک برنامه نویس

تجربیات شخصی محمد باقری نسب

SSL رایگان برای وب سایت شما

تیتر این مقاله جذاب و وسوسه کننده به نظر میاد، اما آیا واقعا چنین چیزی امکان پذیر هست؟ در ادامه با من همراه باشید.


Let’s Encrypt

Let’s Encrypt یک پروژه آزاد با هدف ایجاد محیطی امن در سطح وب هست که این امکان رو برای شما فراهم میکنه تا یک گواهینامه SSL معتبر با گرید A برای وب سایت خودتون صادر کنید. به این معنی که بدون پرداخت هیچ هزینه ای و تنها با یک پیکربندی ساده بر روی سرور، امنیت کامل در تبادل اطلاعات بر روی وب سایت شما تضمین میشه و هرکسی آدرس سایت شما رو توی مرورگر باز کنه، ابتدای آدرس سایت شما با رنگ سبز نمایش داده میشه!

رنگ سبز ssl در آدرس بار


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


پیکربندی Let’s Encrypt بر روی Nginx

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

در اولین قدم، باید مخزن certbot که شامل ابزارهایی جهت پیکربندی سریع Let’s Encrypt بر روی وب سرورهای مختلف هست رو اضافه و سپس نسخه مخصوص وب سرور nginx رو نصب کنیم:

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update

sudo apt-get install python-certbot-nginx


حالا جهت اعمال برخی تغییرات، فایل پیکربندی سایت رو باز میکنیم:

sudo nano /etc/nginx/sites-available/default


1. در فایل پیکربندی سایت، ابتدا پارامتر server_name رو بررسی کنید. مقدار این پارامتر دقیقا باید معادل آدرس سایتتون باشه.

2. جهت افزایش ضریب امنیت، پارامتر ssl_dhparam رو هم تعریف میکنیم. البته انجام این کار ضروری نیست و ربطی به پیکربندی Let’s Encrypt نداره، ولی من همیشه ترجیح میدم سطح امنیت رو تا حد ممکن بالا ببرم. از قدیم گفتن کار از محکم کاری عیب نمیکنه!

server {

...

server_name yoursite.com;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

...

}


فایل پیکربندی وب سایت شما باید شامل دو پارامتری که در کد بالا میبینید باشه. دقت کنید که مسیر فایل dhparam.pem که به پارامتر ssl_dhparam اختصاص دادیم، در حال حاضر موجود نیست و با دستور زیر اون رو میسازیم:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048


تولید این فایل یکم طول میکشه، پس صبور باشید. نهایتا تغییرات جدید پیکربندی سایت رو در nginx بارگذاری میکنیم:

sudo service nginx reload


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

صدور گواهینامه SSL رایگان

بعد از پیکربندی سایت در nginx و اطمینان از دسترسی به پورت SSL در فایروال، درخواست صدور گواهینامه رو برای Let’s Encrypt ارسال میکنیم:

sudo certbot --nginx -d yoursite.com


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

1. همچنان دسترسی به پروتکل http وجود داشته باشد

2. تمامی درخواست ها به پروتکل امن https هدایت شود (این گزینه رو انتخاب کنید)

تبریک! وب سایت شما به گواهینامه SSL با بالاترین سطح امنیتی (گرید A) مجهز شد. الان اگه توی مرورگر آدرس سایتتون رو باز کنید، https سبز رنگ رو در ابتدای آدرس سایت مشاهده خواهید کرد. پیشنهاد میکنم برای ارزیابی سطح امنیت گواهینامه SSL خودتون، به این سایت مراجعه کنید: SSL Server Test

تمدید خودکار

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

با اجرای دستور زیر، از شما درخواست میشه که یک ویرایشگر دلخواه برای ویرایش فایل پیکربندی کار جدید در سرویس cron انتخاب کنید:

sudo crontab -e


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

15 3 * * * /usr/bin/certbot renew --quiet

مفهوم کد بالا اینه که هر روز در ساعت 03:15 بامداد، فرمان renew از ابزار certbot در حالت سکوت (quiet) اجرا و تاریخ اعتبار گواهینامه SSL بررسی بشه و در صورت نیاز، گواهینامه SSL این سرور تمدید بشه و در غیر این صورت هیچی!

امیدوارم این مقاله برای شما مفید بوده باشه، سوال یا مشکلی بود کامنت بذارید حتما پاسخ میدم؛ موفق باشید!

نظرات  (۲)

۲۴ شهریور ۹۶ ، ۱۰:۳۰ مهندس رضا عباسی
سلام
بابت انتقال تجاربتون از شما ممنونم.
۲۴ شهریور ۹۶ ، ۱۱:۱۱ دانلود آهنگ جدید
عالی

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی
این سایت رو تنها به دلیل علاقم به نوشتن و به اشتراک گذاری تجربیاتم با دیگران ایجاد کردم، گفتم شاید به درد کسی بخوره، پس کپی برداری از محتوا بدون ذکر منبع هیچ اشکالی نداره! اما اگه ذکر کردین هم خوشحالم میکنید :)
آخرین نظرات
  • ۲۴ شهریور ۹۶، ۱۱:۱۱ - دانلود آهنگ جدید
    عالی
دسته بندی ها