رفتن به محتوا

افزونه DNS برای acme.sh

افزونه‌ی dns_nsin به acme.sh اجازه می‌دهد چالش DNS-01 پروتکل ACME را با ساخت و حذف خودکار رکوردهای TXT با نام _acme-challenge روی زون نسین شما حل کند. برای گواهی‌های وایلدکارت (*.example.com) که حتماً به اعتبارسنجی DNS نیاز دارند، راه همین است.

احراز هویت با کلید API انجام می‌شود — همان کلیدی که برای REST API استفاده می‌کنید — پس نیازی به مدیریت اطلاعات ورود جداگانه‌ی DNS نیست.

  • دامنه‌ی شما روی نسین باشد و رکوردهایش این‌جا مدیریت شوند (نسین برای زون authoritative باشد).
  • یک کلید API غیر فقط‌خواندنی. DNS-01 رکورد TXT می‌سازد و حذف می‌کند، پس کلید فقط‌خواندنی در مرحله‌ی نوشتن رد می‌شود. از panel.nsin.cloud → Settings → API Keys یکی بسازید.

افزونه را دانلود کنید: dns_nsin.sh

آن را در پوشه‌ی dnsapi/ مربوط به acme.sh (~/.acme.sh/dnsapi/) کپی کنید:

Terminal window
curl -o ~/.acme.sh/dnsapi/dns_nsin.sh https://nsin.cloud/docs/dns_nsin.sh

کلید را یک‌بار export کنید — acme.sh آن را در account.conf ذخیره می‌کند و در هر تمدید دوباره استفاده می‌کند:

Terminal window
export NSIN_Api_Key="nsin_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
متغیرالزامیتوضیح
NSIN_Api_Keyبلهکلید API نسین (با nsin_ شروع می‌شود و فقط‌خواندنی نیست).
NSIN_Apiخیرتغییر آدرس پایه‌ی API. پیش‌فرض https://api.nsin.cloud.
Terminal window
# یک نام میزبان
acme.sh --issue --dns dns_nsin -d example.com -d www.example.com
# وایلدکارت (نیازمند DNS-01)
acme.sh --issue --dns dns_nsin -d example.com -d '*.example.com'

acme.sh افزونه را صدا می‌زند تا هر رکورد TXT با نام _acme-challenge را بسازد، منتظر انتشار می‌ماند و پس از اعتبارسنجی رکوردها را حذف می‌کند. چالش وایلدکارت و چالش دامنه‌ی اصلی نام یکسانی دارند با دو مقدار متفاوت — افزونه هرکدام را به‌عنوان رکورد جداگانه می‌سازد و جداگانه حذف می‌کند، پس هر دو درست مدیریت می‌شوند.

  • افزودنPOST /domains/{domain}/records/ با {"name":"_acme-challenge","type":"TXT","destination":"<value>"}.
  • حذف — رکوردها را فهرست می‌کند، رکورد TXT با مقدار چالش را می‌یابد و DELETE /domains/{domain}/records/{id} را صدا می‌زند.

افزونه زون قابل ثبت را با تطبیق نام چالش با فهرست دامنه‌های حساب شما تشخیص می‌دهد، پس گواهی زیردامنه‌ها (_acme-challenge.sub.example.com) بدون تنظیم اضافه کار می‌کند.

  • read-only API key یا 403 — کلید فقط‌خواندنی است؛ کلید جدیدی با دسترسی نوشتن بسازید.
  • invalid domain — دامنه در حساب نسین شما نیست یا کاربر کلید به آن دسترسی ندارد. بررسی کنید در GET /domains/ دیده شود.
  • شکست اعتبارسنجی — شاید DNS هنوز منتشر نشده باشد. --dnssleep 60 (یا بیشتر) اضافه کنید تا acme.sh پیش از درخواست اعتبارسنجی صبر کند.
  • برای دیدن دقیق درخواست‌ها و پاسخ‌های API با --debug 2 اجرا کنید.