وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

گواهی SSL وایلدکارد چیست؟ دریافت گواهی چند زیردامنه با تأیید DNS

گواهی *.example.com چه نام‌هایی را پوشش می‌دهد؟ مراحل DNS-01، تست نام، نصب و تمدید امن گواهی وایلدکارد را ببینید.

انتشار:
توسط تیم فنی نت‌آرام
۸ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله گواهی SSL وایلدکارد چیست؟ دریافت گواهی چند زیردامنه با تأیید DNS در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
اگر چند زیردامنه مثل shop.example.com و blog.example.com دارید، شاید بخواهید به‌جای دریافت گواهی جدا برای تک‌تک آن‌ها از گواهی وایلدکارد یا ستاره‌ای استفاده کنید. گواهی برای *.example.com می‌تواند نام‌های یک‌سطحی زیر آن دامنه را پوشش دهد؛ اما دامنه اصلی و زیردامنه چندسطحی به‌طور خودکار تحت پوشش همان ستاره نیستند.
در این آموزش ابتدا محدوده نام‌ها را مشخص می‌کنیم، سپس روش تأیید مالکیت از طریق DNS را با یک مثال واقعی و گام‌به‌گام می‌بینیم. صدور گواهی، نصب آن روی وب‌سرور و تمدیدش سه کار جدا هستند؛ موفقیت یکی، انجام دو کار دیگر را تضمین نمی‌کند.

گواهی ستاره‌ای کدام نام‌ها را پوشش می‌دهد؟

در مثال، example.com نام فرضی است و همه‌جا باید دامنه خودتان را جایگزین کنید. گواهی‌ای که نام *.example.com در فهرست نام‌های معتبرش باشد، معمولاً برای shop.example.com و blog.example.com معتبر است. اما برای این دو نام به‌تنهایی کافی نیست:
  • example.com، چون ستاره جای یک بخش از زیردامنه را می‌گیرد و خود دامنه اصلی را شامل نمی‌شود.
  • api.shop.example.com، چون دو سطح زیر example.com قرار دارد. برای آن باید نام مشخص یا پوشش مناسب سطح *.shop.example.com در گواهی وجود داشته باشد.
اگر هم دامنه اصلی و هم زیردامنه‌ها را لازم دارید، در درخواست گواهی هر دو نام example.com و *.example.com را قرار دهید و پس از صدور بررسی کنید هر دو در فهرست نام‌ها ثبت شده باشند. مستندات Cloudflare درباره پوشش چندسطحی نیز محدود بودن ستاره گواهی به یک سطح را توضیح می‌دهد.
رکورد ستاره‌ای DNS موضوع دیگری است و رفتار آن به ساختار نام‌های موجود بستگی دارد. اگر هنوز DNS نام‌ها را تنظیم نکرده‌اید، راهنمای رکورد وایلدکارد DNS را بخوانید. وجود یک گواهی معتبر، زیردامنه یا رکورد DNS را برای شما نمی‌سازد.

پیش‌نیازها و انتخاب روش صدور

شما باید امکان مدیریت DNS فعال دامنه را داشته باشید و برای نصب گواهی نیز به پنل میزبانی یا وب‌سرور مربوط دسترسی مجاز داشته باشید. اگر از هاست اشتراکی استفاده می‌کنید، اول در پنل هاست یا مستندات سرویس ببینید آیا صدور و نصب گواهی ستاره‌ای با تأیید DNS پشتیبانی می‌شود یا نه؛ لازم نیست روی هاست اشتراکی دستورهای مدیر سرور را اجرا کنید.
برای سروری که خودتان مدیریت می‌کنید، یک روش معمول استفاده از مشتری ACME مثل Certbot با چالش DNS-01 است. طبق راهنمای رسمی Let's Encrypt، برای صدور گواهی ستاره‌ای این روش از رکورد TXT در DNS استفاده می‌کند. روش HTTP-01 برای صدور همان نام ستاره‌ای کاربرد ندارد.
اگر قرار است تمدید خودکار باشد، از ابتدا درباره پشتیبانی ارائه‌دهنده DNS از API و افزونه معتبر مربوط به آن تصمیم بگیرید. کلید API باید حداقل مجوز لازم را داشته باشد و نباید در فایل عمومی، مقاله یا تیکت عمومی قرار گیرد. روش دستی‌ای که پایین توضیح می‌دهیم، بدون ابزار و قلاب خودکار، تمدید خودکار گواهی را فراهم نمی‌کند.

صدور دستی با Certbot؛ نمونه برای مدیر سرور

این بخش برای لینوکس با Certbot نصب‌شده و دسترسی sudo است. نسخه و روش نصب Certbot در سیستم شما ممکن است متفاوت باشد. پیش از اجرا، از تنظیمات و گواهی‌های موجود نسخه پشتیبان بگیرید و مطمئن شوید دامنه را کنترل می‌کنید. اگر پنل هاست صدور گواهی را مدیریت می‌کند، هم‌زمان یک روش جدا را بدون هماهنگی اجرا نکنید؛ ممکن است مدیریت تمدید یا مسیر نصب را پیچیده کند.
در ترمینال سرور، پس از جایگزینی هر دو نمونه دامنه، فرمان زیر را اجرا کنید:
کد / دستورsudo certbot certonly --manual --preferred-challenges dns -d example.com -d '*.example.com'
گزینه certonly از Certbot می‌خواهد گواهی را دریافت کند ولی به‌طور خودکار تنظیم وب‌سرور را نصب یا تغییر ندهد. --manual یعنی هنگام تأیید باید خودتان رکورد را در DNS قرار دهید. قرار دادن نام ستاره‌ای داخل نقل‌قول مانع تفسیر * توسط پوسته لینوکس می‌شود. مراحل تعاملی و محدودیت روش دستی در راهنمای رسمی Certbot آمده است.
Certbot برای تأیید هر نام، مقدار یا مقادیر TXT و نام محل ثبت را نمایش می‌دهد. پنجره ترمینال را باز نگه دارید، به پنل DNS فعال دامنه بروید و مقدار نمایش‌داده‌شده را دقیقاً در نام اعلام‌شده ثبت کنید؛ برای دامنه نمونه، این نام معمولاً _acme-challenge.example.com است. بعضی پنل‌ها فقط بخش _acme-challenge را می‌خواهند و دامنه را خودشان اضافه می‌کنند؛ نام نهایی را پیش از ذخیره ببینید.
اگر برای دامنه اصلی و ستاره‌ای دو مقدار لازم شد، ممکن است هر دو در یک نام TXT لازم باشند. مقدار قبلی را کورکورانه جایگزین یا رکورد مربوط به سرویس دیگر را حذف نکنید. بعضی پنل‌ها برای یک نام، چند مقدار TXT را در یک مجموعه و بعضی آن‌ها را به شکل رکوردهای جدا نمایش می‌دهند. اگر _acme-challenge به ناحیه دیگری واگذار یا با CNAME هدایت شده، رکورد باید در محل واقعی پاسخ‌گو مدیریت شود.

قبل از ادامه، رکورد TXT را ببینید

پس از ذخیره در DNS، در ترمینال دیگری این پرس‌وجو را با دامنه واقعی خودتان اجرا کنید:
کد / دستورdig TXT _acme-challenge.example.com +short
خروجی باید مقدار یا مقادیر مربوط به چالش را نشان دهد. اگر dig نصب نیست، روی ویندوز می‌توانید در Command Prompt از دستور زیر استفاده کنید:
کد / دستورnslookup -type=TXT _acme-challenge.example.com 1.1.1.1
دیدن مقدار در یک حل‌کننده، اثبات قطعی دیده‌شدن آن از همه شبکه‌ها و سرورهای تأیید نیست؛ اما یک سرنخ مفید است. اگر مقدار دیده نمی‌شود، نام نهایی رکورد، ناحیه DNS فعال و زمان انتشار را بررسی کنید. سپس به پنجره Certbot برگردید و مطابق درخواست آن ادامه دهید. ممکن است برای چالش بعدی دوباره به ثبت مقدار دیگری نیاز باشد.
اگر تأیید ناموفق بود، پیام دقیق را نگه دارید. اشتباه در نام رکورد، نرسیدن تغییر به DNS معتبر، واگذاری چالش به جای دیگر یا خط‌مشی صدور گواهی از علت‌های ممکن‌اند. درخواست ناموفق را بارها پشت سر هم تکرار نکنید؛ محدودیت صدور وجود دارد. ابتدا علت را برطرف کنید و سپس دوباره تلاش کنید.

دریافت شد؛ چطور آن را نصب و بررسی کنیم؟

پس از موفقیت، Certbot مسیر واقعی فایل‌های گواهی و کلید را در خروجی نمایش می‌دهد. آن مسیر را برای وب‌سرور یا پنل مربوط استفاده کنید؛ نام پوشه ممکن است به‌دلیل وجود گواهی قبلی پسوند داشته باشد. کلید خصوصی را محرمانه نگه دارید و در پوشه عمومی سایت قرار ندهید. نصب روی Nginx، Apache یا پنل‌ها مسیر و تنظیمات متفاوتی دارد؛ از راهنمای همان سرویس استفاده کنید و پیش از بارگذاری مجدد، آزمون تنظیمات آن را اجرا کنید.
پس از نصب، هر نام موردنیاز را جداگانه در مرورگر باز کنید. با کلیک روی اطلاعات اتصال امن می‌توانید نام‌های پوشش‌داده‌شده و تاریخ انقضا را ببینید. برای آزمون خط فرمان نیز نام واقعی زیردامنه را جایگزین کنید:
کد / دستورcurl -I https://shop.example.com/
اگر curl بدون خطای گواهی یک پاسخ HTTP دریافت کرد، اتصال TLS از همان دستگاه برای آن نام برقرار شده است. کدهایی مانند 200، 301 یا 404 درباره پاسخ وب‌سایت‌اند؛ برای مثال 404 می‌تواند یعنی مسیر وب وجود ندارد، حتی اگر گواهی معتبر باشد. دامنه اصلی، یک زیردامنه یک‌سطحی و هر نام چندسطحی موردنیاز را جداگانه آزمایش کنید. بررسی اعتبار گواهی را با گزینه‌های غیرفعال‌کننده امنیت دور نزنید.
اگر از Cloudflare یا پراکسی دیگر استفاده می‌کنید، گواهی‌ای که بازدیدکننده می‌بیند و گواهی ارتباط پراکسی با سرور اصلی می‌توانند متفاوت باشند. هر دو مسیر باید با تنظیمات امن همان سرویس سازگار باشند؛ تست مرورگر به‌تنهایی گواهی نصب‌شده روی سرور اصلی را در همه معماری‌ها ثابت نمی‌کند.

برای تمدید چه برنامه‌ای لازم است؟

برای گواهی دستی، زمان انقضا و مسئول تمدید را ثبت کنید و پیش از پایان اعتبار، همان روند دریافت یا تمدید را طبق مستندات Certbot تکرار کنید. برای تمدید خودکار DNS-01 باید ابزار یا قلاب مناسب و مجوز محدود DNS را راه‌اندازی و فرآیند را در محیط مناسب آزمایش کنید. صرف نصب Certbot یا دیدن یک گواهی موفق، اثبات تمدید خودکار نیست.
پس از پایان چالش، فقط رکورد موقتی‌ای را حذف کنید که مطمئنید متعلق به همان فرایند تمام‌شده است و دیگر نیازی به آن نیست؛ رکوردهای تأیید سرویس‌های دیگر را نگه دارید. اگر تغییری در پیکربندی وب‌سرور مشکل ایجاد کرد، نسخه ثبت‌شده تنظیمات را برگردانید و صحت گواهی و دسترسی را دوباره بسنجید.
اگر قصد انتخاب نام تازه دارید، شرایط و پسوندهای ثبت دامنه نت‌آرام را ببینید. پس از ثبت، مدیریت DNS و تمدید گواهی همچنان به تنظیمات دامنه و میزبانی شما وابسته است.
برچسب‌ها:
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام