
Let’s Encrypt یک مرجع صدور گواهی SSL (CA) است که گواهینامه های رایگان برای رمزگذاری امن اطلاعات رد و بدل شده بین سرور و مشتری (TLS) ارائه می دهد. با این گواهی ها می توانید از پروتکل امن HTTPS در وب سایت های خود استفاده کنید. فرآیند ایجاد، اعتبارسنجی، امضا و تمدید گواهی ها در این وب سایت با استفاده از یک نرم افزار کلاینت به نام Certbot انجام می شود.
در این مقاله وبلاگ پارس پک، نحوه استفاده از Certbot برای راه اندازی گواهی SSL/TLS از طریق Let’s Encrypt بر روی سرور CentOS 7 که آپاچی را به عنوان وب سرور اجرا می کند، توضیح می دهیم. همچنین نحوه استفاده از Corn Job برای تمدید خودکار گواهی را آموزش می دهیم.
پیش نیازها
برای استفاده بهتر از این مطالب آموزشی، پیش نیازهای زیر ضروری است:
- سرور CentOS 7 با یک کاربر غیر ریشه با امتیازات sudo راه اندازی می شود.
- فایروال اصلی برای سرورهای جدید CentOS 7 پیکربندی شده است.
- آپاچی روی سرور CentOS 7 با پیکربندی میزبان مجازی نصب شده است.
- دامنه ای که شما صاحب آن هستید.
- DNS رکوردی که دامنه شما را با آدرس IP عمومی سرور شما مرتبط می کند.
مرحله 1: Certbot Let’s Encrypt Client را نصب کنید
برای استفاده از Let’s Encrypt برای دریافت گواهی SSL، ابتدا باید Certbot و mod_ssl را نصب کنید. mod_ssl یک ماژول آپاچی است و از رمزگذاری SSL v3 پشتیبانی می کند.
نکته ای که در این مرحله باید به آن توجه کرد این است که بسته Certbot به طور پیش فرض از طریق مدیر بسته در دسترس است و برای نصب آن باید مخزن EPEL را فعال کنید. برای این کار دستور زیر را اجرا کنید:
sudo yum install epel-release
اکنون که به مخزن دسترسی دارید، می توانید تمام بسته های مورد نیاز را نصب کنید:
sudo yum install certbot python2-certbot-apache mod_ssl
در طول مراحل نصب، از شما خواسته می شود که کلید GPG را وارد کنید. این کلید می تواند صحت بسته ای را که نصب می کنید تأیید کند. برای اینکه فرآیند نصب کامل شود، با تایپ حرف y و سپس فشار دادن کلید Enter روی صفحه کلید، کلید GPG را تأیید کنید. با نصب این سرویس، اکنون آماده اجرای Certbot و بازیابی گواهینامه های خود هستید.
اگر می خواهید امنیت Nginx را با نصب SSL بر روی CentOS 7 افزایش دهید، مقاله زیر را مطالعه کنید.
نصب SSL رایگان در CentOS 7 با Nginx
مرحله دوم: اخذ گواهینامه
پس از نصب Certbot، می توانید از آن برای درخواست گواهی SSL برای دامنه خود استفاده کنید. استفاده از Certbot Let’s Encrypt برای تولید گواهی SSL برای Apache بسیاری از این فرآیندها را خودکار می کند. کلاینت به طور خودکار گواهی 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 ندارید، از گزینه دوم یعنی Redirect استفاده کنید. با استفاده از این گزینه، تمام درخواست ها به طور خودکار به پروتکل 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 خود را بررسی کنید تا مطمئن شوید همه چیز به درستی کار می کند. در مرحله بعد این کار را انجام خواهیم داد.
مرحله 3: وضعیت گواهی SSL را بررسی کنید
در این مرحله، می توانید تأیید کنید که Certbot گواهی SSL شما را به درستی با استفاده از ابزار Qualys SSL Server Tester تولید کرده است. برای انجام این کار، لینک زیر را در مرورگر خود تایپ کنید و example.com را با دامنه اصلی خود جایگزین کنید:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
در این صورت صفحه ای باز می شود که بلافاصله تست اتصال SSL به سرور شما آغاز می شود. نمونه ای از این صفحه در تصویر زیر نشان داده شده است:
شروع به آزمایش اتصال SSL به سرور کنید
پس از شروع آزمایش، ممکن است چند دقیقه طول بکشد تا عملیات کامل شود. وضعیت تست در مرورگر شما به روز می شود و برای دیدن نتیجه نیازی به رفرش صفحه ندارید.
پس از پایان تست، نتیجه با حرفی به شما نشان داده می شود که امنیت و کیفیت پیکربندی سرور شما را نشان می دهد. به عنوان مثال، حرف A امنیت و پیکربندی صحیح سرور را نشان می دهد:
نمایش امنیت و کیفیت پیکربندی سرور
پس از اطمینان از اینکه گواهی 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 شما منقضی نمی شود، ایجاد یک Corn Job است که به طور دوره ای دستور تمدید را برای شما اجرا می کند. از آنجایی که تاریخ انقضا ابتدا برای تمدید گواهی بررسی می شود و تمدید فقط در صورتی اتفاق می افتد که کمتر از 30 روز از تاریخ انقضا فاصله داشته باشید، ایجاد یک Corn Job که به صورت هفتگی یا حتی روزانه اجرا می شود خطرناک نخواهد بود.
مستندات رسمی Certbot توصیه می کند که کورن را دو بار در روز اجرا کنید. به این ترتیب، مطمئن خواهید بود که اگر Let’s Encrypt فرآیند ابطال گواهی را آغاز کند، کمتر از نیم روز برای تمدید گواهی با Certbot نیاز دارید.
با ویرایش 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 چیست؟
Certbot نرم افزاری است که می توانید از آن برای نصب خودکار گواهی SSL/TLS بر روی سرور وب سایت خود استفاده کنید.
4. گواهینامه های SSL وب سایت Let’s Encrypt چه مدت اعتبار دارند؟
گواهینامه های صادر شده توسط Let’s Encrypt به مدت 90 روز معتبر خواهند بود. با این حال، توصیه می کنیم گواهی را پس از 60 روز تمدید کنید.
{ “@context”: “https://schema.org”، “@type”: “FAQPage”، “mainEntity”: [{
“@type”: “Question”,
“name”: “CentOS چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “CentOS یکی از توزیعهای لینوکس است که پلتفرم محاسباتی رایگان و منبعبازی را فراهم میکند که ازنظر عملکرد با منبع بالادستیاش، یعنی Red Hat Enterprise Linux، سازگار است.”
}
},{
“@type”: “Question”,
“name”: “گواهی SSL چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “نصب این گواهی روی سرور وبسایت باعث میشود که تمامی اطلاعات بین سرور و کلاینت بهصورت رمزگذاریشده و ازطریق پروتکل ایمن HTTPS انتقال یابد.”
}
},{
“@type”: “Question”,
“name”: “Certbot چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Certbot نرمافزاری است که با استفاده از آن میتوانید گواهی SSL/TLS را بهطورخودکار روی سرور وبسایت خود نصب کنید.”
}
},{
“@type”: “Question”,
“name”: “گواهیهای SSL وبسایت Let’s Encrypt چه مدت اعتبار دارند؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “گواهیهای صادرشده Let’s Encrypt بهمدت ۹۰ روز معتبر خواهند بود. بااینحال، پیشنهاد میکنیم بعد از گذشت ۶۰ روز، گواهی را تمدید کنید.”
}
}]
}
پست ایمن سازی آپاچی با نصب رایگان SSL در CentOS 7 اولین بار در پارسپک پدیدار شد. به نظر می رسد.