سلام
میخواستم ببینم چجوری باید روی سرور لینوکس https فعال کنم
سلام، مراحل کلی گرفتن سرتیفیکیت برای سرور لینوکسی به این صورته (برای سرور های بر پایه دبیان رو مثال میزنم):
پیش نیاز:
- سرور لینوکسی بر پایه دبیان (برای دیسترو های دیگه دستورات متفاوته)
- اشاره آدرس دامنه به سرور
- آزاد بودن پورت 80 و یا 443 (در صورت اشغال بودن این پورت ها باید از آپشن مربوط به سرویس استفاده کرد)
مراحل نصب Certbot و گرفتن سرتیفیکیت:
اول از همه با اجرای کامندهای زیر Certbot رو نصب کنید:
#update the repository
sudo apt-get update -y
#install certbot
sudo apt-get install certbot -y
#confirm installation
sudo certbot --version
در صورتی که از نسخه های قدیمی اوبونتو، دبیان و … استفاده میکنین و با اجرای دستورات بالا قادر به نصب نبودین با اجرای دستور زیر ریپازیتوری Certbot رو اضافه و اقدام به نصب Certbot کنید:
#add certbot repository
sudo add-apt-repository ppa:certbot/certbot
#update the repository
sudo apt-get update -y
#install certbot
sudo apt-get install certbot -y
#confirm installation
sudo certbot --version
بعد از نصب، پورت های موردنیاز رو با استفاده از UFW برای گرفتن سرتیفیکیت باز کنید (پورت 80 و یا 443):
sudo ufw allow 80
اگر از پورت 443 استفاده میکنید به جای عدد 80، در دستور قبلی عدد 443 را وارد کنید.
در صورت اجرای درست دستور بالا، خروجی زیر را مشاهده میکنید:
Output
Rule added
Rule added (v6)
در مرحله بعد با استفاده از Certbot، سرتیفیکیت مورد نظر را دریافت میکنیم:
sudo certbot certonly --standalone --preferred-challenges http -d yourdomain.com -e yourmail@example.com --agree-tos
توضیحات دستور بالا:
- از آپشن --standalone جهت مدیریت چلنج توسط وب سرور داخلی Certbot استفاده میکنیم.
- از آپشن --preferred-challenges http برای مشخص کردن پروتوکل مدیریت چلنج استفاده میکنیم (دقت کنید که اگر از پورت 80 برای دریافت سرتیفیکیت استفاده میکنید از آپشن گفته شده، و اگر از پورت 443 استفاده میکنید به جای http در دستور، مقدار tls-sni رو قرار بدین.
- از آپشن -d برای مشخص کردن دامنه ای که نیاز به تهیه سرتیفیکیت برای آن داریم را مشخص میکنیم، به اصن صورت که به جای yourdomain .com در مثال بالا، آدرس دامنه و یا ساب دامنهی خودتون رو قرار میدین.
- از آپشن -e برای افزودن آدرس ایمیل جهت تهیه سرتیفیکیت استفاده میکنیم که به جای yourmain، آدرس ایمیل خودتون رو قرار میدین.
- در نهایت با افزودن آپشن --agree-tos شرایط و ضوابط استفاده از سرتیفیکیت را میپذیریم.
پس از اجرای درست دستور بالا، خروجی زیر را دریافت میکنید:
Output
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2024-10-23. 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"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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
توضیحات خروجی بالا:
در خط چهارم خروجی، آدرس ذخیرهی فایل سرتیفیکیت پابلیک شما نمایش داده شده است که سایر کلید ها در همان دایرکتوری میباشد که با ورود به دایرکتوری موردنظر میتوانید آن ها را مشاهده کنید.
اتوماتیک سازی فرایند تمدید سرتیفیکیت:
از آنجایی که سرتیفیکیت های Let’s Encrypt به صورت 90 روزه میباشد، برای تمدید خودکار سرتیفیکیت نیاز به تعریف یک کرانجاب داریم که Certbot در فایل /etc/cron.d اسکریپت مورد نظر را اضافه میکند، تنها تنظیمات اضافه ای که نیاز داریم، تعریف ریلود سرویس rabbitmq در فایل تنظیمات دامین در ساب دایرکتوری renewal میباشد، برای این کار وارد دایرکتوری زیر شوید:
cd /etc/letsencrypt/renewal/
حال با استفاده از ویرایشگری مانند nano، خط زیر را در انتهای فایل کانفیگ دامنهی خود اضافه کنید:
renew_hook = systemctl reload rabbitmq
(فایل کانفیگ دامنه فایلی با نام دامنهی شما و پسوند .conf میباشد، مانند yourdomain .com.conf)
حال پس از افزودن خط بالا و ذخیرهی فایل، با اجرای دستور زیر از انجام درست مراحل اطمینان حاصل کنید:
sudo certbot renew --dry-run
در صورت عدم دریافت خطا، مراحل تمدید اتوماتیک سرتیفیکت را به درستی انجام دادید.
دقت کنید که مراحل دریافت سرتیفیکیت آموزش داده شده برای دریافت سرتیفیکیت بر روی سرورهای مجازی بدون وب سرور میباشد، در صورت نصب وب سرورهایی نظیر آپاچی، nginx و … میتوانید از آپشن های مربوط به وب سرور خودتان استفاده نمایید.
به عنوان مثال برای وب سرور آپاچی از دستور certbot --apache و برای وب سرور nginx از دستور certbot --nginx استفاده نمایید.
برای توضیحات بیشتر میتوانید داکیومنت certbot را مطالعه نمایید:
لینک داکیومنت Certbot
باز هم اگر سوالی داشتین و یا در اجرای دستورات به مشکل خوردین در خدمتتون هستم.