نحوه دریافت گواهینامه SSL رایگان با قابلیت wildcard
نقطه صفر…
اینجا میخوایم باهم یادبگیریم که چطوری برای خودمون بدون هیچ هزینهای و بدون نیاز به هیچ مراحل خاصی گواهینامه SSL بگیریم و سایتمون رو HTTPS کنیم (البته بدون گواهینامه هم میشه HTTPS کرد ولی خطای امنیتی نشون میده)
این گواهینامهها ۳ ماه اعتبار دارن و بعد از سه ماه میتونید مجدد گواهی بگیرید.
اگر نمیدونید که چطوری از این گواهینامهها استفاده کنید و فایلها رو توی انجینکس تعریف کنید، نگران نباشید، به این مقاله یه سر بزنید. نحوه کانفیگ HTTPS در وب سرور انجینیکس
خب بریم شروع کنیم…
توی این مقاله قراره که از Let’s Encrypt گواهینامه رایگان بگیریم، Let’s Encrypt یک استاندارد رمز نگاری است که با استفاده از اون اطلاعاتی که بین کاربر و سرور ما رد و بدل میشه رو رمزنگاری میکنه.
شاید براتون سوال پیش بیاد که اگه بخوایم برای زیردامنههامون هم گواهینامه معتبر داشته باشیم آیا Let’s Encrypt اینکار رو برامون انجام میده؟ مثل: my.dailynginx.ir
باید بگم که بله به این روش Wildcard میگن، حتی برای زیردامنهی زیردامنهها هم میشه ازش گواهینامه گرفت.
چطوری باید ازش SSL بگیریم؟ کاری نداره که فقط با یه کامند میشه اینکار رو انجام داد 🙂 در ضمن توی روشی که در زیر بهتون معرفی میکنم نیازی نیست حتی برای اعتبار سنجی فایلی رو در درون سرورتون قرار بدید! این نوع از اعتبار سنجی براساس DNS انجام میشه.
certbot certonly --manual --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -d "*.your-domain" -d your-domain
خب همونطور که میبینید ما اینجا از طریق ابزار certbot اقدام به گرفتن گواهینامه میکنیم، توی کامند بالا به جای your-domain باید آدرس دامنهای که میخواید برای اون SSL بگیرید رو وارد کنید.
توی دستور بالا “*your-domain” به این معنی هستش که ما برای زیردامنههامون هم این گواهی رو نیاز داریم پس لطفا Wildcard صادر کن.
شاید براتون سوال پیش بیاد که آیا ما باید حتما اینکار رو داخل سرور انجام بدیم؟ اگر سرور نداشته باشیم چی؟
باید بگم که خیر، این شکلی نیست دوست من شما فقط باید certbot رو روی یک سیستم نصب کنی و ازش استفاده کنی، این سیستم میتونه هرچیزی باشه و نیازی نیست که حتما سرور داشته باشی. تازه نیازی هم نیست که حتما گنو/لینوکس باشه 🙂 روی ویندوز هم میتونی برنامشو نصب کنی، ما برای نصبش هم یه آموزش جداگونه در نظرگرفتیم. نحوه نصب Certbot
خب بریم ادامه دستورمون، بعد از زدن دستور بالا پیغامی مشابه تصویر زیر مشاهده خواهید کرد، ازتون میخواد که یک ایمیل وارد کنید(مهم نیست واقعی باشه یا فیک)
- دقت کنید که باید دستور رو با sudo اجرا کنید.
برای ادامه Y تایپ کنید و اینتر بزنید و به مرحله بعد برید.(مطابق تصویر زیر)
توی این مرحله ازتون میخواد که تایید کنید که قوانین رو قبول دارید یا نه؟ Y بزنید و بیاید مرحله بعد(مطابق تصویر زیر)
توی تصویر بالا ازتون میپرسه که مایل به دریافت ایمیل هستید یا نه؟ اگر دوست دارید ایمیل دریافت کنید Y بزنید.
بعد از زدن اینتر در تصویر بالا به مرحله مهم میرسیم (مطابق تصویر زیر)
توی این مرحله باید وارد قسمت مدیریت DNS دامنتون بشید، (جایی که رکوردهای DNSهاتون رو تعریف میکنید)
ازتون میخواد که یک رکورد جدید از نوع TXT ایجاد کنید با عنوان _acme-challenge
- سپس اون کدی که تولید شده رو به عنوان مقدار برای TXT رکوردی که ایجاد کردید قرار بدید.
اینجا کدی که تولید شده اینه: eIbrhLopaj__VFtNUF6gJRIDwDqdYZ-Iv2qdy2CRVSQ
حالا اگر اینتر بزنید مرحله ای مشابه تصویر زیر میبینید
دقت کنید که مرحله قبل مجدد تکرار میشه منتهی با کدی متفاوت
توی این مرحله هم باز ازتون میخواد که یه رکورد جدید از نوع TXT با همون عنوان _acme-challenge بسازید و مقدارش رو برابر با کد تولید شده قرار بدید.
- دقت کنید که TXT رکورد قبلی رو پاک یا ویرایش نکنید، باید حتما یک رکورد جدید با همون مشخصات فقط با مقدار متفاوت بسازید.
حالا با کمی تاخیر چندثانیه ای، اینتر بزنید. چرا تاخیر؟ به این دلیل که ممکنه هنوز تغییرات مورد نظرمون روی DNS سرور مورد نظر اعمال نشده باشه و اگر نشده باشه، صدور گواهینامه با مشکل مواجه میشه.
حالا اینتر بزنید
اگر پیغامی مثل تصویر بالا مشاهده کردید، تبریک میگم بهتون 🙂
گواهینامه شما با موفقیت ساخته شد.
توی تصویر بالا اگر دقت کنید به ما یک مسیر داده شده، /etc/letsencrypt/live/daily-nginx.ir
این مسیر دقیقا جایی هستش که گواهینامه SSL ما داخلش قرار گرفته. حالا اگه بیاید بریم توی اون مسیر فایلها رو خواهیم دید.
- دقت کنید که برای cd کردن توی مسیر مورد نظر باید با دسترسی root اینکار رو انجام بدیم.
همونطور که میبینید فایلای مورد نیاز ما تولید شدن. مهمترینشون fullchain.pem و privkey.pem هستند.
حالا این دوتا فایل رو بردارید و با من بیاید به مقاله نحوه کانفیگ HTTPS در وب سرور انجینیکس تا ازشون توی انجینیکس استفاده کنیم 🙂