برخی از بسته های میزبانی مشترک با cPanel AutoSSL را ارائه نمی دهند یا فقط آنها را با نرخ های بالاتر ارائه می دهند. نتیجه: شما نمی توانید یک گواهی رایگان Let's Encrypt را از طریق رابط cPanel صادر کنید و همه دامنه ها روی یک گواهی خود امضا شده گیر می کنند. مرورگر صفحه را به عنوان "ناامن" نشان می دهد. راه حل: گواهی را خودتان با acme.sh دریافت کنید و آن را از طریق cPanel UAPI نصب کنید - به طور خودکار تمدید می شود، بدون AutoSSL.
HTTPS مدتهاست که اجباری بوده است. وقتی بسته میزبانی وب شما راهی مناسب برای دریافت گواهی رایگان ارائه نمیدهد، ناامیدکنندهتر هم میشود. این اتفاق بیشتر از آنچه فکر میکنید رخ میدهد، به عنوان مثال با بستههای ارزان قیمت سطح مبتدی یا پس از تغییر برنامه که ناگهان دیگر گواهی در آن گنجانده نمیشود. با این حال، این شکاف را میتوان به زیبایی و به طور دائم تنها با چند خط کد در پوسته پر کرد - فرآیند کامل در زیر شرح داده شده است.
۱. از طریق SSH وارد شوید
ssh -p <port> <user>@example.com
۲. acme.sh را نصب کنید
curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc
۳. Let’s Encrypt را به عنوان CA تنظیم کنید
acme.sh --set-default-ca --server letsencrypt
۴. صدور گواهی
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
۵. نصب در سیپنل
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
۶. بررسی کنید
uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer -dates
هوک گواهی را از طریق UAPI در vHost مناسب می نویسد. تنظیمات Deploy ذخیره شده است - از این پس cron همه چیز را قبل از انقضا به طور مستقل تجدید و نصب می کند. صادر کننده "Let's Encrypt" است و تاریخ انقضا حدود 90 روز در آینده است. اگر گواهی قدیمی و خودامضا به جای آن ظاهر شود، بارگذاری مجدد سخت در مرورگر معمولا کمک می کند - گواهی قبلی می تواند به طور موقت ذخیره شود.
برخی از میزبانها، cPanel hook مخصوص به خود را اجرا میکنند. install_ssl و با چیزی شبیه به این پاسخ میدهد adminbin Cpanel/hooks2/...: exit 255. acme.sh هنوز "با موفقیت مستقر شد" را گزارش می دهد - و این درست است. در این مورد، قلاب به دلیل یک مرحله بعدی (مثلاً یک اعلان داخلی یا کار همگام سازی از میزبان) از کار می افتد، نه به دلیل نصب واقعی.
برای دامنههایی که دارای umlaut هستند، acme.sh گواهی را به صورت داخلی در قالب Punycode ذخیره میکند (xn--…) در حالی که تطبیق خودکار هوک فرم یونیکد را مقایسه می کند. نتیجه: "مستقر در 0 سایت از 0" - هیچ چیزی نصب نشده است. نکته دشوار این است که acme.sh همچنین "موفقیت" را در اینجا گزارش می دهد، بنابراین خطا به راحتی نادیده گرفته می شود. راه حل: مستقیماً با دامنه Punycode کار کنید و حالت خودکار را خاموش کنید:
python3 -c "import sys;print(sys.argv[1].encode('idna').decode())" hallöle.de
acme.sh --issue -d xn--hallle-zxa.de -d www.xn--hallle-zxa.de -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--hallle-zxa.de --deploy-hook cpanel_uapi
با دسترسی SSH، به AutoSSL نیازی ندارید: acme.sh گواهی را صادر میکند، که cpanel_uapi-Hook آن را نصب میکند و cron job موجود، آن را به طور خودکار بهروزرسانی میکند. پس از راهاندازی، سرویس HTTPS رایگان به طور مداوم به صورت خودکار اجرا میشود. کسانی که تلاش اولیه را انجام میدهند، در آینده از هرگونه تمدید دستی جلوگیری میکنند - و میتوانند همین راهکار را با یک دستور واحد به هر دامنه اضافی در همان حساب کاربری گسترش دهند.