تیتر این مقاله جذاب و وسوسه کننده به نظر میاد، اما آیا واقعا چنین چیزی امکان پذیر هست؟ در ادامه با من همراه باشید.
Let’s Encrypt
Let’s Encrypt یک پروژه آزاد با هدف ایجاد محیطی امن در سطح وب هست که این امکان رو برای شما فراهم میکنه تا یک گواهینامه SSL معتبر با گرید A برای وب سایت خودتون صادر کنید. به این معنی که بدون پرداخت هیچ هزینه ای و تنها با یک پیکربندی ساده بر روی سرور، امنیت کامل در تبادل اطلاعات بر روی وب سایت شما تضمین میشه و هرکسی آدرس سایت شما رو توی مرورگر باز کنه، ابتدای آدرس سایت شما با رنگ سبز نمایش داده میشه!
تنها محدودیتی که 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 انتخاب کنید:
من معمولا اکثر فایلهای متنی رو با ویرایشگر nano که خیلی ساده و سبک هست ویرایش میکنم. شما هم میتونید nano رو انتخاب کنید. به هر حال بعد از اینکه فایل رو در ویرایشگر محبوب خودتون باز کردین، در انتهای فایل، کد زیر رو کپی کنید:
15 3 * * * /usr/bin/certbot renew --quiet
مفهوم کد بالا اینه که هر روز در ساعت 03:15 بامداد، فرمان renew از ابزار certbot در حالت سکوت (quiet) اجرا و تاریخ اعتبار گواهینامه SSL بررسی بشه و در صورت نیاز، گواهینامه SSL این سرور تمدید بشه و در غیر این صورت هیچی!
امیدوارم این مقاله برای شما مفید بوده باشه، سوال یا مشکلی بود کامنت بذارید حتما پاسخ میدم؛ موفق باشید!
بابت انتقال تجاربتون از شما ممنونم.