گواهی wildcard یک گواهی SSL است که میتواند هر تعداد زیردامنه را با یک گواهی واحد ایمن کند. ممکن است زمانی به گواهی wildcard نیاز داشته باشید که بخواهید از چندین زیردامنه پشتیبانی کنید اما نخواهید هر یک را جداگانه پیکربندی کنید.
Let’s Encrypt یک مرجع صدور گواهی SSL است که گواهیها را به صورت رایگان و با استفاده از API خودکار ارائه میدهد. در این آموزش شما یک گواهی wildcard از Let’s Encrypt ایجاد خواهید کرد با دنبال کردن این مراحل:
این اطلاعات برای هر توزیع لینوکس و نرمافزار سرور قابل استفاده است، اما ممکن است لازم باشد برخی جزئیات را با مراجعه به مستندات بیشتر تکمیل کنید که ما در ادامه لینکهای مورد نیاز را ارائه میدهیم.
این آموزش مفروض میدارد که شما موارد زیر را در اختیار دارید:
ابتدا بیایید رکوردهای DNS خود را تنظیم و تست کنیم.
قبل از اینکه گواهی wildcard را دریافت کنیم، باید مطمئن شویم که سرور به درخواستها روی زیردامنههای مختلف پاسخ میدهد. این معمولاً با تنظیم یک رکورد wildcard در DNS انجام میشود که شبیه به این است:
کاراکتر * به عنوان جایگزین برای هر نام میزبان در نظر گرفته میشود. این نمونه رکورد DNS، دامنههایی مانند one.example.com و two.example.com را پوشش میدهد. اما دامنه اصلی example.com یا دامنههایی با چندین سطح زیردامنه مثل one.two.example.com را پوشش نمیدهد چون wildcard فقط جایگزین یک سطح نام است، نه چندین سطح.
همچنین یک رکورد wildcard DNS فقط میتواند شامل یک کاراکتر wildcard باشد، بنابراین *.*.example.com مجاز نیست.
لطفاً به مستندات ارائهدهنده DNS خود مراجعه کنید تا رکوردهای صحیح DNS را تنظیم نمایید. شما باید یک رکورد A یا CNAME wildcard اضافه کنید قبل از ادامه دادن به مراحل بعدی.
برای اطمینان از کارکرد درست wildcard DNS، از دستور host برای پرسش چند نام میزبان استفاده کنید:
مطمئن شوید که نام دامنه و نام میزبان خود را جایگزین کردهاید. همچنین به خاطر داشته باشید که گاهی چند دقیقه طول میکشد تا رکوردهای DNS در سراسر سیستم منتشر شوند. اگر به تازگی رکورد DNS را اضافه کردهاید و خطا دریافت میکنید، چند دقیقه صبر کنید و دوباره تلاش کنید.
وقتی نام میزبان وارد شده به درستی تفکیک شود، خروجی مشابه نمونه زیر خواهید گرفت:
در غیر این صورت، خطای NXDOMAIN نمایش داده میشود:
پس از تایید اینکه زیردامنههای متعددی به سرور شما اشاره میکنند، میتوانید به مرحله بعدی بروید که در آن Certbot را برای اتصال به ارائهدهنده DNS خود پیکربندی میکنیم.
قبل از صدور گواهی، Let’s Encrypt یک چالش انجام میدهد تا اطمینان حاصل کند که شما مالک نامهای میزبان برای گواهی درخواستی هستید. در مورد گواهی wildcard ما باید اثبات کنیم که مالک کل دامنه هستیم. این کار با پاسخ دادن به چالش مبتنی بر DNS انجام میشود؛ Certbot این چالش را با ایجاد یک رکورد DNS خاص در دامنه هدف پاسخ میدهد. سپس سرورهای Let’s Encrypt صحت آن رکورد را بررسی میکنند و پس از تایید، گواهی صادر خواهد شد.
برای اتصال به ارائهدهنده DNS، Certbot به یک پلاگین نیاز دارد. لطفاً به فهرست پلاگینهای DNS Certbot مراجعه کنید تا نام پلاگین مناسب برای ارائهدهنده خود را بیابید.
برای مثال، ارائهدهنده پارمین کلود با نام certbot-dns-digitalocean شناخته میشود. میتوانید این پلاگین را در اوبونتو و دبیان با دستور زیر نصب کنید:
sudo apt install python3-certbot-dns-digitalocean
سایر پلاگینها فرمت مشابهی دارند. نام ارائهدهنده خود را در دستور بالا جایگزین کنید اگر از سرویس دیگری استفاده میکنید.
در توزیعهای CentOS و RPM ممکن است دستور نصب به این شکل باشد:
sudo dnf install python3-certbot-dns-digitalocean
یا
sudo yum install python3-certbot-dns-digitalocean
ممکن است نیاز باشد مخازن اضافی را روی این توزیعها فعال کنید تا به بستههای پلاگین Certbot دسترسی داشته باشید.
برای اطمینان از نصب صحیح پلاگین، میتوانید از Certbot بخواهید پلاگینهای موجود را فهرست کند:
certbot plugins
اگر پلاگین dns-digitalocean در اولین لیست دیده شد به همراه پلاگینهای standalone و webroot، نصب موفقیتآمیز بوده است.
بعد از اطمینان از نصب پلاگین، به مرحله پیکربندی آن بروید.
از آنجا که Certbot باید به ارائهدهنده DNS شما متصل شود و رکوردهای DNS را به نمایندگی از شما ایجاد کند، باید اجازه دسترسی به این کار را به آن بدهید. این کار با دریافت یک توکن API یا اطلاعات احراز هویت دیگر از ارائهدهنده DNS شما انجام میشود و آن اطلاعات در یک فایل امن ذخیره میشود که Certbot بعدها آن را میخواند.
از آنجا که هر ارائهدهنده فرایند احراز هویت متفاوتی دارد، لطفاً به مستندات پلاگین DNS مربوط به Certbot خود در این بخش مراجعه کنید تا اطلاعات لازم در مورد توکنها یا کلیدهای مورد نیاز را بیابید.
در این مثال، ما از پلاگین dns-digitalocean استفاده میکنیم و اطلاعات خود را در فایل ~/certbot-creds.ini ذخیره میکنیم.
این فایل را با ویرایشگر nano ایجاد میکنیم:
nano ~/certbot-creds.ini
این فایل متنی جدیدی باز میکند. شما باید اطلاعات خود را طبق دستورالعملهای ارائهدهنده DNS وارد کنید. برای پارمین کلود تنها یک توکن API لازم است که به صورت زیر خواهد بود:
dns_digitalocean_token = your_api_token_here
اطمینان حاصل کنید که your_api_token_here را با توکن واقعی خود جایگزین کردهاید.
فایل را ذخیره و بسته ویرایشگر را ببندید. اگر از nano استفاده میکنید، کلیدهای CTRL+O سپس ENTER و در نهایت CTRL+X را فشار دهید.
پس از ایجاد فایل، باید دسترسیهای آن را محدود کنید تا اطلاعات محرمانه شما در دسترس سایر کاربران قرار نگیرد. دستور زیر دسترسی فقط خواندن و نوشتن کاربر فعلی را تنظیم میکند:
chmod 600 ~/certbot-creds.ini
پس از تنظیم فایل مجوزها، آماده هستید تا گواهی خود را درخواست کنید.
اکنون دریافت گواهی wildcard Let’s Encrypt تقریبا مشابه صدور گواهیهای معمولی است؛ تفاوت اصلی در مشخص کردن چالش DNS و اشاره به فایل credentials است. همچنین باید از دامنه wildcard به همراه گزینه -d استفاده کنیم:
sudo certbot certonly \
--dns-digitalocean \
--dns-digitalocean-credentials ~/certbot-creds.ini \
-d *.example.com
توجه داشته باشید که نمیتوانید از پلاگینهای –nginx یا –apache برای پیکربندی خودکار این گواهی wildcard استفاده کنید. ما از دستور certonly استفاده میکنیم تا فقط گواهی را دانلود کنیم.
اگر برای نخستین بار این دستور را اجرا میکنید، ممکن است چند سوال پرسیده شود. پس از پاسخ دادن، Certbot چالش را انجام میدهد، سرورهای Let’s Encrypt آن را تایید و گواهی جدید را در مسیر /etc/letsencrypt/ ذخیره میکند. شما باید خروجی شبیه نمونه زیر ببینید:
شما با موفقیت یک گواهی wildcard SSL ساختهاید! گام بعدی پیکربندی نرمافزار سرور خود برای استفاده از این گواهی است. در بخش بعدی منابعی برای کمک به شما قرار دادهایم.
در این آموزش، Certbot را پیکربندی کردید و یک گواهی wildcard SSL از Let’s Encrypt دریافت کردید. حالا میتوانید سرور خود را برای استفاده از این گواهی جهت امنسازی ارتباطات تنظیم کنید.
با تشکر از اینکه با پارمین کلود همراه بودید.
نظرات کاربران