در پایان این راهنما، با acme.sh و DNS Provider ستون (dns_sotoon) برای یک دامنه یا wildcard گواهی TLS از Let’s Encrypt صادر میکنیم.
مدیریت DNS دامنه باید روی ستون باشد تا چالش DNS-01 از طریق API ستون ثبت شود. برای گواهی خودکار از پنل، فعالسازی TLS خودکار را مطالعه میکنیم. فایل صادرشده را در فعالسازی TLS با گواهی شخصی میگذاریم.
پیشنیازها
- دامنه با مدیریت DNS روی ستون — اولین دامنه را به DNS ستون منتقل کنید
- دسترسی به توکنها و فضاهای کاری در پنل اوشن
gitو محیط لینوکس یا macOS برای اجرای acme.sh
رکورد CNAME
در فرآیند صدور گواهی از زیردامنههایی با پیشوند
_acme-challengeاستفاده میشود. برای این زیردامنهها نباید رکوردCNAMEتنظیم شده باشد؛ در غیر این صورت صدور گواهی مختل میشود.
مراحل
- آخرین نسخهی acme.sh را دریافت میکنیم و وارد مسیر آن میشویم:
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh- وارد پروفایل و بخش توکنها میشویم. روی افزودن توکن کلیک میکنیم و با تعیین نام و تاریخ انقضا، توکن جدید میسازیم.
- مقدار توکن را کپی و بهصورت امن نگهداری میکنیم؛ این مقدار پس از ایجاد توکن، دوباره نمایش داده نمیشود.
امنیت توکن
هر شخصی که به توکن دسترسی داشته باشد، میتواند از طرف ما روی محصولات تغییر ایجاد کند. توکن را در مخزن عمومی یا لاگ قرار نمیدهیم.
- از فضاهای کاری مقدار شناسهی فضای کاری (
WorkspaceUUID) مورد نظر را کپی میکنیم و در ادامه به جایSotoon_WorkspaceUUIDاستفاده میکنیم. - برای یک دامنه مشخص، گواهی صادر میکنیم (
XوYرا با توکن و UUID جایگزین میکنیم):
Sotoon_Token=X Sotoon_WorkspaceUUID=Y ./acme.sh --issue --dns dns_sotoon --server letsencrypt --dnssleep 60 -d 'yourdomain.com'- برای گواهی 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)
