منو سایت

نصب رایگان SSL در CentOS و Apache

 تاریخ انتشار :
/
  وبلاگ
نصب رایگان SSL در CentOS و Apache

Let’s Encrypt یک مرجع صدور گواهی SSL (CA) است که گواهینامه های رایگان برای رمزگذاری امن اطلاعات رد و بدل شده بین سرور و مشتری (TLS) ارائه می دهد. با این گواهی ها می توانید از پروتکل امن HTTPS در وب سایت های خود استفاده کنید. فرآیند تولید، اعتبارسنجی، امضا و تمدید گواهی ها در این وب سایت با استفاده از یک نرم افزار کلاینت به نام Certbot انجام می شود.

در این مقاله وبلاگ پارس پک، نحوه استفاده از Certbot برای راه اندازی گواهی SSL/TLS از طریق Let’s Encrypt بر روی سرور CentOS 7 که آپاچی را به عنوان وب سرور اجرا می کند، توضیح می دهیم. به علاوه، ما همچنین نحوه استفاده از کار Korn را برای تمدید خودکار گواهی ها آموزش می دهیم.

پیش نیازها

برای استفاده بهتر از این مطالب آموزشی، پیش نیازهای زیر ضروری است:

  • یک سرور CentOS 7 با یک کاربر غیر ریشه با امتیازات sudo شروع به کار کرد.
  • فایروال پایه برای سرور جدید CentOS 7 پیکربندی شده است.
  • آپاچی روی سرور CentOS 7 با پیکربندی میزبان مجازی نصب شده است.
  • دامنه ای که شما صاحب آن هستید.
  • DNS رکوردی که دامنه شما را به آدرس IP عمومی سرور شما پیوند می دهد.

مرحله 1: کلاینت Certify Let’s Encrypt را نصب کنید

برای استفاده از Let’s Encrypt برای دریافت گواهی SSL، ابتدا باید Certbot و mod_ssl را نصب کنید. mod_ssl یک ماژول آپاچی است و از رمزگذاری SSL v3 پشتیبانی می کند.

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

sudo yum install epel-release

اکنون که به مخزن دسترسی دارید، می توانید تمام بسته های مورد نیاز خود را نصب کنید:

sudo yum install certbot python2-certbot-apache mod_ssl

در طول مراحل نصب، از شما خواسته می شود که کلید GPG را وارد کنید. این کلید می تواند صحت بسته ای را که نصب می کنید تأیید کند. برای اینکه فرآیند نصب به پایان برسد، با تایپ حرف y و سپس فشار دادن کلید Enter روی صفحه کلید، کلید GPG را تأیید کنید. با نصب این سرویس، اکنون آماده اجرای Certbot و بازیابی گواهینامه های خود هستید.

مرحله 2: دریافت گواهی

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

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

sudo certbot --apache -d example.com

با استفاده از این دستور، Certbot با پلاگین –apache اجرا می شود و گواهی دامنه که بعد از -d می آید برای پیکربندی آماده می شود.

اگر می خواهید گواهینامه ای ایجاد کنید که برای چندین دامنه یا زیر دامنه معتبر باشد، می توانید آنها را به عنوان پارامتر به دستور اضافه کنید و هر یک از آنها را با -d تگ کنید. در این روش، اولین دامنه ای که بعد از -d وارد می شود، دامنه پایه ای است که Let’s Encrypt برای تولید گواهی استفاده می کند. بنابراین نام دامنه پایه را به عنوان اولین پارامتر در ابتدای لیست قرار دهید و سپس دامنه های اضافی را به این لیست اضافه کنید. نحوه انجام این کار در کد زیر توضیح داده شده است:

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

در این مثال، دامنه پایه example.com است.

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

sudo certbot --apache

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

اگر دامنه ارائه شده توسط دستور ServerName در فایل میزبان مجازی مشخص نشده باشد، در حین کار از شما خواسته می شود که این فایل را مشخص کنید. در بیشتر موارد، فایل پیش فرض ssl.conf حاوی اطلاعاتی است که در این زمینه به آن نیاز دارید.

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

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):2

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

Output
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-08-14. 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"
 - 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

فایل های گواهی صادر شده در دایرکتوری /etc/letsencrypt/live در زیر شاخه ای از نام دامنه پایه ای که انتخاب کرده اید در دسترس خواهند بود.

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

خرید ssl

خرید ssl

مرحله 3: بررسی وضعیت گواهی SSL

در این مرحله، می توانید با استفاده از ابزار تست سرور SSL Qualys تأیید کنید که Certify گواهینامه SSL شما را به درستی تولید کرده است. برای این کار لینک زیر را در مرورگر خود وارد کرده و domain اصلی خود را جایگزین example.com کنید:

https://www.ssllabs.com/ssltest/analyze.html?d=example.com

در این صورت صفحه ای برای شما باز می شود که بلافاصله تست اتصال SSL با سرور شما شروع می شود. نمونه ای از این صفحه در تصویر زیر نشان داده شده است:

نصب رایگان SSL در CentOS و Apache

نصب رایگان SSL در CentOS و Apache

آزمایش اتصال SSL به سرور را شروع کنید

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

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

نصب رایگان SSL در CentOS و Apache

نصب رایگان SSL در CentOS و Apache

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

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

با نصب و تأیید گواهی SSL، گام بعدی تنظیم تمدید خودکار گواهی است تا اطمینان حاصل شود که گواهی نصب شده همیشه معتبر است.

مرحله 4: تنظیمات تمدید خودکار گواهی SSL

گواهینامه های صادر شده توسط Let’s Encrypt به مدت 90 روز معتبر است. با این حال، توصیه می کنیم هر 60 روز یک بار گواهی SSL وب سایت خود را تمدید کنید تا احتمال خطا کاهش یابد. همچنین راه حل دیگر پیکربندی خودکار گواهی SSL است که به طور خودکار گواهی صادر شده برای شما را تمدید می کند.

ما با دستوری که برای تمدید گواهی SSL استفاده می شود شروع می کنیم. Certbot دستوری در Let’s Encrypt است که به طور خودکار گواهی نصب شده را بررسی می کند و در صورتی که گواهینامه کمتر از 30 روز باشد سعی می کند به طور خودکار آن را تمدید کند. برای آزمایش نحوه عملکرد پسوند دامنه، می توانید شبیه سازی آن را با استفاده از دستور –dry-run اجرا کنید:

sudo certbot renew --dry-run

خروجی این دستور باید چیزی شبیه به این باشد:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for example.com
http-01 challenge for www.example.com
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-staging-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/example.com/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/example.com/fullchain.pem (success)
...

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

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

اسناد رسمی Certbot توصیه می کند که ذرت را دو بار در روز مصرف کنید. به این ترتیب، می توانید مطمئن باشید که اگر Let’s Encrypt فرآیند ابطال گواهی را آغاز کند، کمتر از نیم روز برای تمدید گواهی با Certify زمان نیاز دارید.

با ویرایش crontab یک کار جدید ایجاد کنید که به طور خودکار خود را دو بار در روز تمدید می کند. برای انجام این کار با کاربر root می توانید از دستور زیر استفاده کنید:

sudo crontab -e

در این حالت ویرایشگر متن شما crontab پیش فرض را باز می کند که در این مرحله یک فایل خالی است. با فشردن i وارد حالت insert شوید و خط زیر را اضافه کنید:

crontab
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

پس از اتمام، ESC را فشار دهید تا از حالت درج خارج شوید. سپس عبارت :wp را تایپ کرده و Enter را فشار دهید تا فایل ذخیره شده و خارج شوید. این کار یک کار ذرت جدید ایجاد می کند که هر روز در ظهر و نیمه شب اجرا می شود.

نتیجه

امنیت وب سایت نیاز به استفاده از گواهی SSL دارد. با در نظر گرفتن این موضوع، در این مقاله از آموزش لینوکس و آموزش سنتی سیستم عامل یاد گرفتیم که چگونه از یک کلاینت نرم افزاری به نام Certbot برای نصب یک گواهی رایگان SSL/TLS بر روی سرور CentOS 7 و تولید خودکار این گواهی استفاده کنیم.

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

1. CentOS چیست؟

CentOS یک توزیع لینوکس است که یک پلتفرم محاسباتی رایگان و منبع باز را ارائه می‌کند که از نظر عملکردی با لینوکس مادرش Red Hat Enterprise سازگار است.

2. گواهی SSL چیست؟

نصب این گواهی بر روی سرور وب سایت تضمین می کند که تمام اطلاعات بین سرور و مشتری رمزگذاری شده و از طریق پروتکل امن HTTPS منتقل می شود.

3. گواهی چیست؟

Certbot نرم افزاری است که می توانید از آن برای نصب خودکار گواهی های SSL/TLS بر روی سرورهای وب سایت خود استفاده کنید.

4. گواهینامه های SSL وب سایت Let’s Encrypt چه مدت اعتبار دارند؟

گواهینامه های صادر شده توسط Let’s Encrypt به مدت 90 روز معتبر خواهند بود. با این حال، توصیه می کنیم گواهی را پس از 60 روز تمدید کنید.