Let's Encrypt DomainFactory

بعض حزم الاستضافة المشتركة مع cPanel لا تقدم AutoSSL أو تقدمها فقط بأسعار أعلى. النتيجة: لا يمكنك إصدار شهادة Let's Encrypt مجانية عبر واجهة cPanel، وجميع النطاقات عالقة في شهادة موقعة ذاتيًا. يعرض المتصفح الصفحة على أنها "غير آمنة". المخرج: احصل على الشهادة بنفسك باستخدام acme.sh وقم بتثبيتها عبر cPanel UAPI - يتم تجديدها تلقائيًا، بدون AutoSSL.


لطالما كان استخدام بروتوكول HTTPS إلزاميًا. ولذلك، يصبح الأمر أكثر إحباطًا عندما لا توفر باقة الاستضافة الخاصة بك طريقة سهلة للحصول على شهادة مجانية. يحدث هذا أكثر مما تتصور، على سبيل المثال مع الباقات الأساسية منخفضة التكلفة أو بعد تغيير الخطة حيث تُحذف الشهادة فجأة. مع ذلك، يمكن سد هذه الثغرة بسهولة وبشكل دائم ببضع أسطر من التعليمات البرمجية في سطر الأوامر - العملية الكاملة موضحة أدناه.

1. تسجيل الدخول عبر SSH

ssh -p <port> <user>@example.com

2. قم بتثبيت acme.sh

curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc

3. تعيين Let's Encrypt كجهة إصدار الشهادات

acme.sh --set-default-ca --server letsencrypt

4. إصدار الشهادة

acme.sh --issue -d example.com -d www.example.com -w ~/public_html

5. التثبيت في لوحة التحكم cPanel

acme.sh --deploy -d example.com --deploy-hook cpanel_uapi

6. تحقق

uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
     | openssl x509 -noout -issuer -dates

يقوم الخطاف بكتابة الشهادة إلى vHost المناسب عبر UAPI. يتم حفظ إعداد النشر - من الآن فصاعدًا، يقوم cron بتجديد كل شيء وتثبيته بشكل مستقل قبل انتهاء صلاحيته. المُصدر هو "Let's Encrypt" وتاريخ انتهاء الصلاحية هو حوالي 90 يومًا في المستقبل. إذا ظهرت الشهادة القديمة الموقعة ذاتيًا بدلاً من ذلك، فعادةً ما تساعد إعادة التحميل الثابت في المتصفح - يمكن تخزين الشهادة السابقة مؤقتًا.

بعض شركات الاستضافة تدير خطاف cPanel الخاص بها. install_ssl ويرد بشيء من هذا القبيل adminbin Cpanel/hooks2/...: exit 255. لا يزال موقع acme.sh يُبلغ عن "تم النشر بنجاح" - وهذا صحيح. في هذه الحالة، يفشل الارتباط بسبب خطوة لاحقة (على سبيل المثال، مهمة إعلام أو مزامنة داخلية من المضيف)، وليس بسبب التثبيت الفعلي.

بالنسبة للنطاقات التي تحتوي على أحرف umlauts، يقوم acme.sh بتخزين الشهادة داخليًا بصيغة Punycode (xn--…)، بينما تقوم أداة المطابقة التلقائية للخطاف بمقارنة نموذج Unicode. النتيجة: "تم النشر إلى 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 المرفقة عليه مُحدّثًا تلقائيًا. بمجرد الإعداد، تعمل خدمة HTTPS المجانية باستمرار دون أي تدخل. أولئك الذين يبذلون الجهد الأولي يوفرون على أنفسهم عناء التجديد اليدوي في المستقبل، ويمكنهم توسيع نطاق الحل نفسه ليشمل أي نطاق إضافي في نفس الحساب بأمر واحد.

عودة