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. أبرزها:
| المزود | الإضافة |
|---|---|
| Cloudflare | python3-certbot-dns-cloudflare |
| Route53 (سحابة أمريكية) | python3-certbot-dns-route53 |
| سحابة أمريكية DNS | python3-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 دقيقة.
ابدأ الآن
تبي تجرب بنفسك؟ اختر باقة الاستضافة المناسبة أو صمم سيرفرك الخاص بالمواصفات اللي تبيها.
