گواهی های SSL وایلدکارد Let’s Encrypt با استفاده از اعتبارسنجی کلودفلیر روی CentOS 7

۱۹۳ بازدید
آخرین به‌روزرسانی: ۱۸ شهریور ۱۳۹۷
زمان مطالعه: ۶ دقیقه
گواهی های SSL وایلدکارد Let’s Encrypt با استفاده از اعتبارسنجی کلودفلیر روی CentOS 7

Let’s Encrypt یک مرجع گواهی (CA) است که گواهی‌های امنیتی رایگانی برای رمزنگاری امنیت لایه انتقال (TLS) ارائه می‌دهد. این بنیاد یک کلاینت نرم‌افزاری به نام Certbot دارد که فرایند ایجاد، تأیید، امضا، نصب و تجدید گواهی‌ها را تسهیل می‌کند.

Let’s Encrypt اینک از گواهی‌های وایلدکارد (Wildcard) نیز پشتیبانی می‌کند. با استفاده از این نوع گواهی‌ها می‌توانید همه زیردامنه‌های یک دامنه را تنها با یک گواهی به حالت امن دربیاورید. این وضعیت در صورتی که بخواهید از چندین سرویس مانند رابط وب، API ها و دیگر سایت‌ها با استفاده از یک سرور منفرد میزبانی کنید، مفید خواهد بود.

برای به دست آوردن یک گواهی وایلدکارد از Let’s Encrypt باید از یکی از افزونه‌های DNS Certbot استفاده کنید که شامل موارد زیر است:

  • certbot-dns-cloudflare
  • certbot-dns-route53
  • certbot-dns-google
  • certbot-dns-digitalocean

افزونه‌ای که انتخاب می‌کنید به سرویس‌هایی که رکوردهای DNS شما میزبانی می‌کنند بستگی دارد. در این راهنما یک گواهی وایلدکارد برای دامنه خود با استفاده از اعتبارسنجی CloudFlare تنظیم می‌کنیم. این کار به کمک Certbot و بر روی یک سیستم لینوکس سنتوس 7 صورت خواهد گرفت. سپس گواهی را طوری پیکربندی می‌کنیم که هر زمان منقضی شد، به طور خودکار تجدید شود.

پیش‌نیازها

برای تکمیل کردن این راهنما باید موارد زیر را داشته باشید:

  • یک سرور CentOS 7 که می‌توانید به کمک این آموزش فرادرس آن را راه‌اندازی کنید. این سرور باید یک کاربر غیر root با مجوز دسترسی sudo و یک فایروال داشته باشد.
  • ما به یک نام دامنه کاملاً ثبت شده هم نیاز داریم. شما می‌توانید نام دامنه را به طور رایگان از Freenom یا از هر یکی از شرکت‌های دیگر ثبت دامنه تهیه کنید.
  • به یک حساب Cloudflare هم نیاز داریم.
  • یک رکورد DNS برای دامنه خود در DNS کلودفلیر به همراه مجموعه زیردامنه‌ها تنظیم می‌کنیم. می‌توانید از راهنمای کلودفلیر در مورد راه‌اندازی وب‌سایت برای پیکربندی این وضعیت استفاده کنید.

مرحله 1: نصب Certbot

بسته Certbot به طور پیش‌فرض در نرم‌افزار مدیریت بسته CentOS وجود ندارد. باید ریپازیتوری EPEL را فعال کنید تا بتوانید certbot و افزونه‌های آن را نصب کنید. برای افزودن ریپازیتوری EPEL به CentOS 7 دستور زیر را اجرا کنید:

sudo yum install -y epel-release

زمانی که نصب پایان یافت، می‌توانید certbot را نصب کنید:

sudo yum install -y certbot

سپس افزونه کلودفلیر را برای سپس افزونه کلودفلیر را برای certbot نصب کنید:

sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare

اگر از سرویس DNS دیگری استفاده می‌کنید، می‌توانید افزونه مربوطه را با استفاده از دستور yum search بیابید:

yum search python2-certbot-dns

اینک آماده هستیم که گواهی سرور خود را به دست آوریم. ابتدا باید API کلودفلیر را دریافت کنیم.

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

برای این که certbot بتواند گواهی‌های امنیتی وایلدکارد را به طور خودکار تجدید کند، باید اطلاعات ورود به حساب کلودفلیر و کلید API را در اختیار آن قرار دهید. بدین منظور وارد حساب کلودفلیر خود شوید و به صفحه پروفایل بروید. در خط Global API Key بر روی دکمه View کلیک کنید.

به دلایل امنیتی از شما خواسته می‌شود که رمز حساب کلودفلیر خود را مجدداً وارد کنید. آن را وارد کرده و CAPTCHA را اعتبار سنجی نمایید. سپس مجدداً بر روی دکمه View کلیک کنید. کلید API را ببینید:

این کلید را کپی کنید چون در مرحله بعد از آن استفاده خواهیم کرد. اینک به سرور بازگشته و فرایند به دست آوردن گواهی را ادامه دهید.

مرحله 3: پیکربندی certbot

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

ابتدا دستور certbot را بدون هیچ پارامتری وارد کنید تا یک فایل پیکربندی اولیه ایجاد شود:

sudo certbot

سپس یک فایل پیکربندی در دایرکتوری /etc/letsencrypt ایجاد کنید که شامل ایمیل و کلید API کلودفلیر خواهد بود:

sudo vi /etc/letsencrypt/cloudflareapi.cfg

اطلاعات زیر را در فایل وارد کنید و به جای عبارت‌های سمت راست تساوی، اطلاعاتی را که در مرحله قبل به دست آوردید جایگزین کنید:

dns_cloudflare_email = your_cloudflare_login

dns_cloudflare_api_key = your_cloudflare_api_key

فایل را ذخیره کنید و از ویرایشگر خارج شوید. اکنون که کلید API کلودفلیر را در اختیار دارید، می‌توانید همان کارهایی را که در رابط کاربری کلودفلیر انجام می‌دادید، از خط فرمان سرور نیز انجام دهید. بنابراین برای این که حساب خود را حفاظت کنید مطمئن شوید که فایل پیکربندی تنها قابل خواندن از سوی مالکش است و هیچ کس دیگری نمی‌تواند اطلاعات آن را به دست آورد:

sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

زمانی که کار نوشتن فایل پیکربندی به پایان رسید، آماده دریافت گواهی هستیم.

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

برای دریافت گواهی امنیتی از دستور certbot استفاده می‌کنیم و افزونه مورد نظر خود، فایل حاوی اطلاعات رمز عبور و سروری که برای مدیریت درخواست استفاده می‌کنیم را بیان خواهیم کرد. به طور پیش‌فرض certbot از سرورهای تولید Let’s Encrypt استفاده می‌کند که از نسخه 1 ACME API بهره می‌گیرند؛ اما certbot از پروتکل دیگری برای دریافت گواهی‌های وایلدکارد استفاده می‌کند و از این رو باید یک نقطه نهایی نسخه 2 ACME برای آن تعیین کنید.

دستور زیر را وارد کنید تا یک گواهی وایلدکارد برای دامنه خود دریافت کنید:

sudo certbot certonly --cert-name your_domain --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg --server https://acme-v02.api.letsencrypt.org/directory -d "*.your_domain" -d your_domain

از شما خواسته می‌شود که آدرس ایمیلی را در این مرحله وارد نمایید. این آدرس ایمیل برای دریافت اعلان‌های ضروری تجدید گواهی و موارد امنیتی استفاده می‌شود:

Output

...

Plugins selected: Authenticator dns-cloudflare, Installer None

Enter email address (used for urgent renewal and security notices) (Enter 'c' to

cancel): your email

سپس از شما خواسته می‌شود با شرایط و مقررات این سرویس موافقت خود را اعلام کنید:

Output

-------------------------------------------------------------------------------

Please read the Terms of Service at

https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must

agree in order to register with the ACME server at

https://acme-v02.api.letsencrypt.org/directory

-------------------------------------------------------------------------------

(A)gree/(C)ancel: A

در این مرحله از شما خواسته می‌شود که آدرس ایمیل را با بنیاد مرزهای الکترونیک (Electronic Frontier Foundation) به اشتراک بگذارید:

Output

-------------------------------------------------------------------------------

Would you be willing to share your email address with the Electronic Frontier

Foundation, a founding partner of the Let's Encrypt project and the non-profit

organization that develops Certbot? We'd like to send you email about EFF and

our work to encrypt the web, protect its users and defend digital rights.

-------------------------------------------------------------------------------

(Y)es/(N)o: N

سپس certbot گواهی‌های شما را دریافت می‌کند. در این مرحله پیام زیر را مشاهده می‌کنید:

Output

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at:

/etc/letsencrypt/live/your_domain/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/your_domain/privkey.pem

Your cert will expire on 2018-07-31. To obtain a new or tweaked

version of this certificate in the future, simply run certbot

again. 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

اینک گواهی وایلدکارد در اختیار شما است. در ادامه آنچه certbot برای شما دانلود کرده است را بررسی می‌کنیم. از دستور ls برای دیدن محتوای دایرکتوری که کلید API و اطلاعات نام کاربری و رمز عبور شما را نگه‌داری می‌کند استفاده کنید:

sudo ls /etc/letsencrypt/live/your_domain
Output

cert.pem chain.pem fullchain.pem privkey.pem README

فایل README شامل اطلاعاتی در مورد این فایل‌ها است:

$ cat /etc/letsencrypt/live/your_domain/README

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

This directory contains your keys and certificates.

`privkey.pem`: the private key for your certificate.

`fullchain.pem`: the certificate file used in most server software.

`chain.pem`: used for OCSP stapling in Nginx >=1.3.7.

`cert.pem`: will break many server configurations, and should not be used

without reading further documentation (see link below).

We recommend not moving these files. For more information, see the Certbot

User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.

در این بخش می‌توانید سرورهای خود را با گواهی‌های وایلدکارد پیکربندی کنید. معمولاً تنها به دو مورد از این فایل‌ها نیاز خواهید داشت: fullchain.pem و privkey.pem.

برای مثال، می‌توانید چندین سرویس مبتنی بر وب را پیکربندی کنید:

  • wwww.example.com
  • api.example.com
  • mail.example.com

بدین منظور به یک وب‌سرور مانند آپاچی (Apache) یا انجین‌ایکس (Nginx) نیاز دارید. توضیح مراحل نصب و پیکربندی این سرورها فراتر از حیطه این مقاله است. برای تجدید گواهی امنیتی وب‌سایت خود می‌توانید از مرحله بعد کمک بگیرید.

مرحله 5: تجدید گواهی‌ها

Let’s Encrypt گواهی‌های کوتاه‌مدتی صادر می‌کند که به مدت 90 روز اعتبار دارند. ما باید یک وظیفه cron راه‌اندازی کنیم تا زمان منقضی شدن گواهی‌ها را بررسی کند و آن‌ها را در زمان مشخص و به طور خودکار تجدید کند. در ادامه یک وظیفه cron ایجاد می‌کنیم که بررسی تجدید گواهی را به صورت روزانه بررسی می‌کند. از دستور زیر برای باز کردن فایل crontab برای ویرایش آن استفاده کنید:

sudo crontab -e

خط کد زیر را که به صورت روزانه تلاش می‌کند تا گواهی را تجدید کند، به فایل اضافه کنید:

30 2 * * * certbot renew --noninteractive

در خط کد فوق هر یک از بخش‌ها کار مشخصی دارند که در ادامه توضیح داده‌ایم:

  • بخش نخست یعنی « این دستور را در ساعت 02:30 نیمه شب به طور روزانه اجرا کن.»
  • دستور certbot renew به بررسی همه گواهی‌های نصب شده روی سیستم می‌پردازد و آن‌ها را که در کمتر از سی روز دیگر منقضی می‌شوند تجدید می‌کند.
  • noninteractive-- به certbot می‌گوید که منتظر ورودی کاربر نماند.

پس از به‌روزرسانی گواهی‌ها باید وب‌سرور مجدداً راه‌اندازی شود. دستور renew شامل هوک‌هایی برای اجرای دستورات یا اسکریپت‌هایی پیش و پس از تجدید گواهی است. شما می‌توانید این هوک را نیز در فایل پیکربندی تجدید گواهی برای دامنه مورد نظر خود تنظیم کنید.

برای مثال، برای بارگذاری مجدد سرور انجین‌ایکس باید فایل پیکربندی تجدید گواهی را باز کنید:

sudo vi /etc/letsencrypt/renewal/your_domain.conf

سپس خط زیر را در زیر بخش [renewalparams] اضافه کنید:

renew_hook = systemctl reload nginx

نتیجه‌گیری

در این راهنما مراحل نصب کلاینت certbot، دریافت گواهی وایلدکارد با استفاده از اعتبارسنجی DNS و فعال‌سازی تجدید خودکار را با هم مرور کردیم. بدین ترتیب شما می‌توانید از یک گواهی منفرد برای زیردامنه های مختلف وب‌سایت استفاده کنید و سرویس‌های وب مختلف خود را به صورت امن درآورید.

اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد می‌کنیم موارد زیر را نیز بررسی کنید:

==

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
digitalocean
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *