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

خطای Unauthorized در گواهی Let’s Encrypt را رفع کنیم

برای خطای Unauthorized در تمدید SSL، A و AAAA دامنه، پورت 80، مسیر HTTP-01 یا رکورد DNS-01 را با جزئیات خطا تطبیق دهید.

انتشار:
توسط تیم فنی نت‌آرام
۶ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله خطای Unauthorized در گواهی Let’s Encrypt را رفع کنیم در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
خطای Unauthorized هنگام گرفتن یا تمدید گواهی Let's Encrypt یعنی بررسی مالکیت دامنه موفق نشده است. پیام به‌تنهایی نمی‌گوید رمز یا حساب شما اشتباه است. سامانهٔ ACME معمولاً یک فایل موقت یا رکورد TXT می‌سازد و Let's Encrypt باید بتواند همان مقدار را از اینترنت عمومی بخواند. اگر دامنه به سرور دیگری اشاره کند، مسیر چالش بسته باشد یا مقدار DNS اشتباه باشد، صدور گواهی متوقف می‌شود.

اول نوع چالش و دامنهٔ خطادار را بخوانید

در صفحهٔ خطا یا گزارش AutoSSL، نام دامنه و نوع challenge را پیدا کنید: http-01 یا dns-01. اگر چند دامنه در یک گواهی هستند، ممکن است یکی موفق و دیگری ناموفق شده باشد. نام دقیق مثل www.example.com با example.com فرق دارد؛ هر دو باید در گواهی و تنظیم DNS مناسب باشند.
متن کامل خطا را نگه دارید، مخصوصاً نشانی فایلی که سرویس نتوانسته بخواند یا نام TXT مورد انتظار. مقدار نمونه‌ای که در این مقاله می‌بینید واقعی نیست؛ مقدار challenge هر بار عوض می‌شود. گواهی را چند بار پشت‌سرهم درخواست نکنید؛ درخواست‌های تکراری می‌توانند به محدودیت صدور برسند، در حالی که علت اصلی هنوز وجود دارد.

اگر چالش HTTP-01 است، DNS و پورت 80 را ببینید

HTTP-01 از مسیر زیر یک فایل موقت می‌خواند:
کد / دستورhttp://example.com/.well-known/acme-challenge/TOKEN
دامنهٔ نمونه و TOKEN را با مقدار گزارش خودتان جایگزین نکنید مگر اینکه سرویس آن را مشخص کرده باشد. در ترمینال می‌توانید مقصدهای عمومی را بخوانید:
کد / دستورdig +short A example.com dig +short AAAA example.com
نشانی‌های IPv4 و IPv6 باید به جایی برسند که چالش برای همان دامنه نصب می‌شود. اگر رکورد AAAA قدیمی به سرور دیگری اشاره می‌کند، برخی درخواست‌ها ممکن است به میزبان اشتباه برسند. رکورد را تنها وقتی اصلاح کنید که IP درست را از پنل یا میزبان تأیید کرده باشید؛ IP حدسی وارد نکنید.
HTTP-01 به پورت 80 نیاز دارد. اگر فایروال، قاعدهٔ تغییر مسیر، احراز هویت یا افزونهٔ امنیتی مسیر /.well-known/acme-challenge/ را می‌بندد، فایل تأیید دیده نمی‌شود. طبق راهنمای رسمی نوع چالش‌های Let's Encrypt، سرویس برای HTTP-01 فایل را از همان مسیر عمومی می‌خواند و پورت دلخواه دیگری را قبول نمی‌کند.
اگر جلوی سرور CDN یا پراکسی دارید، مطمئن شوید درخواست دامنه به همان مبدأ مورد انتظار می‌رسد و WAF فایل چالش را رد نمی‌کند. لازم نیست کل امنیت سایت را خاموش کنید؛ از میزبان بخواهید لاگ درخواست همان مسیر را در زمان خطا ببیند یا فقط همان مسیر را طبق راهنمای سرویس اجازه دهد. اگر یک فایل آزمایشی می‌سازید، از متن بی‌خطر استفاده و پس از آزمون آن را حذف کنید؛ فایل token واقعی گواهی را دستی کپی نکنید.

اگر چالش DNS-01 است، TXT دقیق را منتشر کنید

در DNS-01، سرویس مقدار TXT موقتی را زیر نام _acme-challenge اعلام می‌کند. این رکورد را در پنل DNS authoritative دامنه بسازید، نه لزوماً پنل شرکتی که از آن هاست خریده‌اید. اگر نام‌سرورها به Cloudflare یا سرویس دیگری منتقل شده‌اند، همان‌جا رکورد را ایجاد کنید.
پس از ذخیره، با dig TXT _acme-challenge.example.com مقدار عمومی را بخوانید. باید همان مقدار اعلام‌شده را ببینید. بعضی پنل‌ها خودشان پسوند دامنه را به نام رکورد اضافه می‌کنند؛ اگر نام کامل را در فیلد host وارد کنید، ممکن است دامنه دوبار تکرار شود. دستورالعمل همان پنل را بخوانید و خروجی را از DNS عمومی آزمایش کنید، نه فقط جدول داخلی پنل.
اگر چند TXT برای چالش‌های هم‌زمان دارید، رکوردی را حذف نکنید تا مطمئن شوید مربوط به درخواست قدیمی است. پس از موفقیت، مقادیر موقت را طبق روش سرویس‌دهنده پاک کنید تا رکوردهای بی‌استفاده انباشته نشوند. سرویس‌های صدور خودکار می‌توانند این کار را انجام دهند؛ واردکردن دستی TXT بیشتر برای تشخیص موقت یا DNS provider بدون اتصال خودکار به کار می‌رود.

پس از اصلاح، فقط یک درخواست تازه اجرا کنید

وقتی مقصد DNS، مسیر فایل یا TXT درست شد، دوباره یک‌بار صدور یا تمدید را اجرا کنید. سپس گزارش جدید را باز کنید تا دامنه‌های تأییدشده و ناموفق را ببینید. در مرورگر قفل HTTPS را باز کنید و تاریخ انقضا و نام دامنهٔ داخل گواهی را کنترل کنید. اگر گواهی صادر شد ولی مرورگر آن را نمی‌پذیرد، این دیگر خطای challenge نیست و باید زنجیرهٔ گواهی یا نام دامنه بررسی شود.
اگر خطا ادامه داشت، نام دامنه، نوع challenge، زمان آزمون و مقدار خروجی DNS یا پاسخ فایل را به میزبان بدهید؛ کلید خصوصی گواهی را ارسال نکنید. مقالهٔ فعال‌کردن SSL در هاست دربارهٔ نصب گواهی است. این راهنما مخصوص مرحله‌ای است که سرویس هنوز مالکیت دامنه را تأیید نکرده است.
گزارش صادرکننده گاهی URL دقیق و پاسخ دریافتی را نشان می‌دهد. همان URL را از شبکه‌ای بیرون از سرور باز کنید و ببینید محتوای challenge می‌آید یا صفحهٔ ورود، 403 یا 404. اگر مرورگر شما فایل را می‌بیند ولی سرویس تأیید نمی‌بیند، چند IP یا سرور پشت load balancer را بررسی کنید؛ ممکن است فایل فقط روی یکی نصب شده باشد. زمان و مسیر را به میزبان بدهید تا لاگ همان درخواست عمومی را پیدا کند.
HTTP-01 می‌تواند تغییر مسیر را دنبال کند، اما مسیر نهایی نباید به صفحهٔ نامرتبط، فرم ورود یا پورت دیگری برسد. اگر www به دامنهٔ بدون www می‌رود، مقصد نهایی را هم آزمایش کنید. امنیت کل سایت را خاموش نکنید؛ میزبان می‌تواند فقط مسیر challenge را در زمان لازم اجازه دهد. تغییر پراکسی یا DNS ممکن است ترافیک واقعی سایت را جابه‌جا کند، پس بدون هماهنگی با مدیر DNS آن را انجام ندهید.
DNS-01 نیازمند دسترسی به پنل DNS است ولی به بازبودن پورت 80 وابسته نیست و برای wildcard هم کاربرد دارد. TXT را از نام‌سرور عمومی بخوانید؛ دیدن مقدار در پنل به معنی انتشار عمومی آن نیست. اگر نام‌سرورها تازه تغییر کرده‌اند، TXT را در ناحیهٔ فعال بسازید، نه در پنل قدیمی ثبت‌کننده. نوع challenge را بی‌دلیل عوض نکنید؛ هر روش به دسترسی جداگانه نیاز دارد.
اشتراک‌گذاری:
لینکدینتلگرامایکس

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

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