كلاود
أدلة

Let's Encrypt Wildcard: شهادة مجانية لكل فرعياتك

كلاود|٢٧ أبريل ٢٠٢٦|4 دقائق قراءة|١٬٠٧٥ مشاهدة
Let's Encrypt Wildcard: شهادة مجانية لكل فرعياتك

شهادة واحدة مجانية تغطي *.domain.com. DNS challenge مع Certbot. نشرح الإعداد خطوة بخطوة.

ما هي شهادة Wildcard؟

شهادة SSL العادية تحمي نطاقاً واحداً: example.com. شهادة Wildcard تحمي النطاق الرئيسي وجميع النطاقات الفرعية من المستوى الأول: *.example.com. هذا يعني أن app.example.com وapi.example.com وmail.example.com وأي نطاق فرعي آخر كلها محمية بشهادة واحدة.

Let's Encrypt وفّرت دعم شهادات Wildcard منذ 2018 عبر بروتوكول ACME v2 مع تحقق DNS-01. الشهادة مجانية وتتجدد كل 90 يوماً تلقائياً إذا ضبطت الإعداد بشكل صحيح.

متى تحتاج شهادة Wildcard؟

  • تُشغّل عدة تطبيقات على نطاقات فرعية مختلفة
  • تبني منصة SaaS تُنشئ نطاقاً فرعياً لكل عميل
  • تريد تبسيط إدارة الشهادات بدلاً من إصدار شهادة لكل نطاق فرعي
  • تُشغّل بيئات متعددة: staging.example.com وdev.example.com

متى لا تحتاجها؟

إذا كان لديك نطاق واحد أو نطاقين فرعيين فقط، شهادة عادية لكل نطاق أبسط وأسهل في الإعداد. Let's Encrypt تسمح بإصدار حتى 50 شهادة لكل نطاق أسبوعياً.

المتطلبات الأساسية

  • سيرفر Linux مع صلاحيات root
  • نطاق تملكه مع إمكانية تعديل سجلات DNS
  • Certbot مُثبّت (الأداة الرسمية لـ Let's Encrypt)
  • مزود DNS يدعم API (لتجديد تلقائي) أو قبول التعديل اليدوي

التثبيت خطوة بخطوة

الخطوة 1: تثبيت Certbot

على Ubuntu/Debian:

sudo apt update && sudo apt install certbot -y

على AlmaLinux/Rocky:

sudo dnf install epel-release -y && sudo dnf install certbot -y

الخطوة 2: طلب الشهادة

شهادات Wildcard تتطلب تحقق DNS-01 حصرياً. لا يمكن استخدام تحقق HTTP-01:

sudo certbot certonly --manual --preferred-challenges dns -d "example.com" -d "*.example.com"

Certbot سيطلب منك إضافة سجل TXT في DNS بهذا الشكل:

_acme-challenge.example.com TXT "سلسلة-عشوائية-طويلة"

أضف السجل عبر لوحة تحكم DNS الخاصة بك، انتظر 2-5 دقائق لانتشاره، ثم اضغط Enter.

الخطوة 3: التحقق من الإصدار

sudo certbot certificates

يجب أن ترى الشهادة مع النطاقات المشمولة وتاريخ الانتهاء.

التجديد التلقائي باستخدام DNS API

لماذا التجديد اليدوي مشكلة؟

شهادات Let's Encrypt تنتهي كل 90 يوماً. إذا اعتمدت على التجديد اليدوي، ستنسى حتماً وينقطع HTTPS عن موقعك. الحل: أتمتة التحقق عبر DNS API.

مع Cloudflare DNS

ثبّت إضافة Certbot لـ Cloudflare:

sudo apt install python3-certbot-dns-cloudflare -y

أنشئ ملف المصادقة:

sudo mkdir -p /etc/letsencrypt && sudo nano /etc/letsencrypt/cloudflare.ini

أضف فيه:

dns_cloudflare_api_token = YOUR_API_TOKEN

اضبط الصلاحيات:

sudo chmod 600 /etc/letsencrypt/cloudflare.ini

اطلب الشهادة تلقائياً:

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d "example.com" -d "*.example.com"

مع مزودي DNS آخرين

Certbot يدعم عشرات المزودين عبر إضافات DNS. أبرزها:

المزودالإضافة
Cloudflarepython3-certbot-dns-cloudflare
Route53 (سحابة أمريكية)python3-certbot-dns-route53
سحابة أمريكية DNSpython3-certbot-dns-google
مزود أجنبيpython3-certbot-dns-مزود أجنبي

جدولة التجديد التلقائي

Certbot يُضيف مهمة cron تلقائياً عند التثبيت. تحقق منها:

sudo systemctl status certbot.timer

أو أضف يدوياً إلى crontab:

0 3 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"

الخيار --deploy-hook يُعيد تحميل Nginx بعد كل تجديد ناجح حتى يستخدم الشهادة الجديدة.

ربط الشهادة مع Nginx

بعد إصدار الشهادة، عدّل إعداد Nginx:

server {

listen 443 ssl http2;

server_name example.com *.example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;

}

ربط الشهادة مع Apache

<VirtualHost *:443>

ServerName example.com

ServerAlias *.example.com

SSLEngine on

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem

SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

</VirtualHost>

أخطاء شائعة وحلولها

المشكلةالسببالحل
فشل تحقق DNSسجل TXT لم ينتشر بعدانتظر 5-10 دقائق وحاول مجدداً
خطأ too many requestsتجاوزت حد الإصدار الأسبوعيانتظر أسبوعاً أو استخدم بيئة staging
الشهادة لا تغطي النطاق الرئيسيطلبت *.example.com فقطأضف -d example.com -d "*.example.com"
التجديد يفشل تلقائياًصلاحيات API token منتهيةجدّد الـ token وحدّث ملف المصادقة
المتصفح يرفض الشهادةاستخدمت fullchain.pem بدلاً من cert.pemاستخدم fullchain.pem دائماً (يشمل السلسلة الكاملة)

اختبار الشهادة

بعد التثبيت، تحقق من صحة الإعداد:

  • SSL Labs: https://www.ssllabs.com/ssltest/ — يجب أن تحصل على تقييم A أو A+
  • سطر الأوامر: openssl s_client -connect example.com:443 -servername example.com
  • التحقق من التغطية: جرّب فتح https://any-subdomain.example.com وتأكد أن الشهادة سارية

شهادات Let's Encrypt Wildcard المجانية متوفرة على جميع سيرفرات كلاود (cloud.net.sa). إذا كنت تُشغّل سيرفراً على كلاود، فريق الدعم يساعدك في الإعداد إذا احتجت مساعدة. لكن مع هذا الدليل، الإعداد لا يحتاج أكثر من 15 دقيقة.


ابدأ الآن

تبي تجرب بنفسك؟ اختر باقة الاستضافة المناسبة أو صمم سيرفرك الخاص بالمواصفات اللي تبيها.

مشاركة