در پایان این راهنما، با acme.sh و DNS Provider ستون (dns_sotoon) برای یک دامنه یا wildcard گواهی TLS از Let’s Encrypt صادر می‌کنیم.

مدیریت DNS دامنه باید روی ستون باشد تا چالش DNS-01 از طریق API ستون ثبت شود. برای گواهی خودکار از پنل، فعال‌سازی TLS خودکار را مطالعه می‌کنیم. فایل صادرشده را در فعال‌سازی TLS با گواهی شخصی می‌گذاریم.


پیش‌نیازها

رکورد CNAME

در فرآیند صدور گواهی از زیردامنه‌هایی با پیشوند _acme-challenge استفاده می‌شود. برای این زیردامنه‌ها نباید رکورد CNAME تنظیم شده باشد؛ در غیر این صورت صدور گواهی مختل می‌شود.


مراحل

  1. آخرین نسخه‌ی acme.sh را دریافت می‌کنیم و وارد مسیر آن می‌شویم:
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
  1. وارد پروفایل و بخش توکن‌ها می‌شویم. روی افزودن توکن کلیک می‌کنیم و با تعیین نام و تاریخ انقضا، توکن جدید می‌سازیم.
  2. مقدار توکن را کپی و به‌صورت امن نگهداری می‌کنیم؛ این مقدار پس از ایجاد توکن، دوباره نمایش داده نمی‌شود.

امنیت توکن

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

  1. از فضاهای کاری مقدار شناسه‌ی فضای کاری (WorkspaceUUID) مورد نظر را کپی می‌کنیم و در ادامه به جای Sotoon_WorkspaceUUID استفاده می‌کنیم.
  2. برای یک دامنه مشخص، گواهی صادر می‌کنیم (X و Y را با توکن و UUID جایگزین می‌کنیم):
Sotoon_Token=X Sotoon_WorkspaceUUID=Y ./acme.sh --issue --dns dns_sotoon --server letsencrypt --dnssleep 60 -d 'yourdomain.com'
  1. برای گواهی wildcard، همان دستور را با دامنه ریشه و *.yourdomain.com اجرا می‌کنیم:
Sotoon_Token=X Sotoon_WorkspaceUUID=Y ./acme.sh --issue --dns dns_sotoon --server letsencrypt --dnssleep 60 -d 'yourdomain.com' -d '*.yourdomain.com'

پارامترها

حتما --dns dns_sotoon و --dnssleep 60 را تنظیم می‌کنیم؛ بدون dnssleep‏، acme.sh ممکن است از DoH استفاده کند و به‌خاطر قطع دسترسی DoH در زیرساخت ایران صدور با خطا مواجه شود. همچنین --server letsencrypt را مشخص می‌کنیم؛ صادرکننده پیش‌فرض (ZeroSSL) برای بسیاری از دامنه‌های ایرانی گواهی صادر نمی‌کند.


بررسی صحت

پس از اتمام موفق، acme.sh مسیر فایل‌های گواهی و کلید را چاپ می‌کند. وجود فایل‌های fullchain و key در همان مسیر را بررسی می‌کنیم.

اگر صدور ناموفق بود، این موارد را کنترل می‌کنیم:

  • مقدار dns_sotoon و --dnssleep 60 در دستور باشد
  • --server letsencrypt باشد (به‌خصوص برای دامنه‌های .ir)

ادامه مسیر