إعداد شهادة SSL من Let's Encrypt على سيرفر Linux - أضمن سيرفرك المخصص مع HTTPS
المنتجات المثالية لهذا الدليل
ابدأ على الفور — اطلب المنتج المناسب واتبع هذا الدليل خطوة بخطوة.
مقدمة
شهادات SSL هي جزء أساسي من الإنترنت، تضمن أن البيانات تُنقل بأمان بين العميل والمضيف. في هذا الدليل، سنستعرض كيفية إعداد أداة Certbot مفتوحة المصدر لطلب شهادات SSL مجانية من سلطة الشهادات غير الربحية Let's Encrypt.
التحضير
لاستخدام Certbot، ستحتاج إلى سيرفر Linux ونطاق تملكه. يجب أن يكون لديك وصول إلى إعدادات DNS للنطاق ويجب عليك إنشاء سجل DNS من نوع A يشير إلى عنوان IP الخاص بسيرفرك Linux لكل نطاق جذري أو نطاق فرعي تخطط لاستخدامه.
يحتوي Certbot أيضًا على إضافات (plugins) إضافية تتيح لك إعداد شهادة بنقرة واحدة بسهولة لنطاق يعمل مع مجموعة متنوعة من سيرفرات الويب مثل Nginx أو Apache. نوصي باستخدام Nginx لأنه سيرفر ويب مفتوح المصدر عالي الأداء وشائع. راجع دليل البروكسي العكسي على Linux لمساعدتك في الإعداد.
التثبيت
ابدأ بتثبيت حزمة Certbot مفتوحة المصدر، التي ستستخدمها لطلب شهادات SSL مجانية من Let's Encrypt.
sudo apt install certbot
بعد تثبيت Certbot، يمكنك المتابعة لطلب شهادات لنطاقاتك. توفر Let's Encrypt وCertbot مجموعة متنوعة من تحديات ACME للتحقق من ملكية النطاق.
ننصح بشدة باستخدام طريقة HTTP-01 الافتراضية لأنها تسمح بالتجديد التلقائي. ولكن إذا واجهت مشاكل، يمكنك تجربة طريقة DNS-01 كبديل يدوي لا يدعم التجديد التلقائي لأنه يعتمد على التحقق عبر سجل DNS من نوع TXT.
لمن يستخدم سيرفر ويب مثل Nginx أو Apache أو سيرفر ويب خاص، نوصي بالانتقال إلى قسم إضافات سيرفر الويب أدناه الذي يوضح كيفية استخدام إضافات Certbot الإضافية لهذه السيرفرات لإعداد شهادة بنقرة واحدة وطلب الشهادات دون الحاجة لإيقاف سيرفر الويب.
تحدي HTTP-01
بعد تثبيت Certbot، يمكنك طلب شهادات لنطاقاتك. في هذا المثال، سنستخدم وضع standalone، مما يعني أن Certbot سيبدأ سيرفر ويب مؤقت لأداء الإجراءات اللازمة. هذا يعني أنه يجب فتح المنفذ 80 في قواعد الجدار الناري وألا يكون هناك سيرفر ويب أو خدمات تعمل على المنفذ 80 للسماح للسيرفر المؤقت بالعمل وجلب التحدي (ومن هنا جاء اسم التحدي HTTP).
في الأمر التالي، ستستخدم معامل --standalone لإخبار Certbot بأنك تريد استخدام خيار السيرفر المؤقت.
# للنطاقات الجذرية
certbot certonly --standalone -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot certonly --standalone -d [your_domain]
# الإعداد التفاعلي
certbot certonly --standalone
بعد تنفيذ الأمر، قد يُطلب منك إكمال إعداد تفاعلي لأول مرة يطلب منك إدخال بريد إلكتروني للتواصل بخصوص الشهادة، يليه خيار الاشتراك في قائمة بريدية وشروط وأحكام يجب قبولها.
سيقوم Certbot الآن بإنشاء تحدي ACME واستضافته عبر السيرفر المؤقت. ستقوم خوادم Let's Encrypt بمحاولة جلب هذا التحدي من سيرفرك وعند النجاح سيتم إنشاء الشهادات وحفظها في المسار /etc/letsencrypt/live/[your_domain].
يمكنك الآن استخدام شهادات SSL في أي مكان تحتاجه ببساطة عبر توفير المسار المحلي للشهادات.
سجل TXT في DNS
إذا واجهت صعوبات في التحقق من نطاقك عبر طريقة HTTP-01، يمكنك كبديل تجربة طريقة DNS-01 التي تتطلب إنشاء سجل DNS من نوع TXT بقيمة توفرها Let's Encrypt.
كما ذُكر سابقًا، هذه الطريقة لا تدعم التجديد التلقائي إلا إذا قمت بإعداد بنية تحتية خاصة لإدارتها. لذلك يُنصح بشدة باستخدام طريقة HTTP-01 كلما أمكن.
في الأمر التالي، ستستخدم معامل --preferred-challenges لإخبار Certbot بأنك تريد استخدام طريقة DNS-01.
# للنطاقات الجذرية
certbot certonly --preferred-challenges dns-01 -d [your_root_domain] -d www.[your_root_domain] --manual -m [your_root_domain] -m www.[your_root_domain]
# للنطاقات الفرعية
certbot certonly --preferred-challenges dns-01 -d [your_domain] --manual -m [your_domain]
# الإعداد التفاعلي
certbot certonly --preferred-challenges dns-01
بعد تنفيذ الأمر، قد يُطلب منك إكمال إعداد تفاعلي لأول مرة يطلب منك إدخال بريد إلكتروني للتواصل بخصوص الشهادة، يليه خيار الاشتراك في قائمة بريدية وشروط وأحكام يجب قبولها.
سيزودك Certbot الآن بتعليمات لإنشاء سجل DNS من نوع TXT بقيمة محددة يجب استخدامها. الهدف عادةً ما يكون _acme-challenge. مضافًا قبل نطاقك (في هذا المثال، سيكون _acme-challenge.zapdocs.example.com) والقيمة التي يجب تعيينها ستظهر في الكونسول.
بعد إنشاء السجل، اضغط Enter للمتابعة. إذا كان كل شيء صحيحًا وتم نشر السجل، سيتم إنشاء الشهادات وحفظها في المسار /etc/letsencrypt/live/[your_domain].
يرجى التحلي بالصبر لأن تغييرات سجلات DNS قد تستغرق بعض الوقت للانتشار. عادةً ما يحدث ذلك خلال دقائق، لكن في حالات نادرة قد يستغرق وقتًا أطول.
يمكنك الآن استخدام شهادات SSL في أي مكان تحتاجه ببساطة عبر توفير المسار المحلي للشهادات.
إضافات سيرفر الويب
يحتوي Certbot على مجموعة من الإضافات المختلفة لسيرفرات الويب التي تجعل إدارة الشهادات أسهل، حيث تقوم الإضافات تلقائيًا بتحرير إعدادات السيرفر المناسبة لك. لاستخدام إضافة، فقط أضف المعامل المناسب لأمر certbot.
كلتا الطريقتين تستخدمان تحدي HTTP-01 وتعملان بنفس الطريقة تقريبًا. عند استخدام إحدى الإضافات، يبحث Certbot أولًا عن إعداد السيرفر المناسب الذي يحتوي على النطاق المطلوب كمعامل server_name. عند العثور عليه، ينشئ Certbot تحدي ACME ويضيف كتلة مؤقتة location /.well-known/acme-challenge/... إلى إعداد السيرفر.
بعدها تحاول خوادم Let's Encrypt جلب هذا التحدي من سيرفرك وعند النجاح يتم إنشاء الشهادة وتعديل إعدادات السيرفر تلقائيًا لاستخدام HTTPS (المنفذ 443) وإضافة المسارات للشهادة الجديدة.
- Nginx
- Apache
- Webroot
إضافة Nginx
قبل استخدام الإضافة، تأكد من تثبيتها.
sudo apt install python3-certbot-nginx
لاستخدام إضافة Nginx، استخدم معامل --nginx في الأمر كما يلي.
# للنطاقات الجذرية
certbot --nginx -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot --nginx -d [your_domain]
# الإعداد التفاعلي
certbot --nginx
إذا أردت تعطيل التعديلات التلقائية على إعدادات السيرفر من Certbot، يمكنك إضافة معامل certonly في الأمر مثل certbot certonly.
إضافة Apache
قبل استخدام الإضافة، تأكد من تثبيتها.
sudo apt install python3-certbot-apache
لاستخدام إضافة Apache، استخدم معامل --apache في الأمر كما يلي.
# للنطاقات الجذرية
certbot --apache -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot --apache -d [your_domain]
# الإعداد التفاعلي
certbot --apache
إذا أردت تعطيل التعديلات التلقائية على إعدادات السيرفر من Certbot، يمكنك إضافة معامل certonly في الأمر مثل certbot certonly.
إضافة Webroot
إذا كنت تشغل سيرفر ويب محلي خاص لا يستخدم برامج تقليدية، قد تفضل استخدام طريقة webroot لتستخدم سيرفرك الخاص دون الحاجة لإيقافه.
لاستخدام إضافة Webroot، استخدم معامل --webroot في الأمر مع تضمين -w [your_webserver_path] (اختصار لـ --webroot-path) وهو مسار الدليل الأعلى لسيرفر الويب الخاص بك.
# للنطاقات الجذرية
certbot --webroot -w [your_webserver_path] -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot --webroot -w [your_webserver_path] -d [your_domain]
# الإعداد التفاعلي
certbot --webroot -w [your_webserver_path]
أحد المواقع الشائعة لجذر الويب هو /var/www/html. يمكنك أيضًا استخدام هذا مع سيرفرات مثل Nginx أو Apache في الحالات التي تريد فيها استخدام السيرفر بدون التعديلات التلقائية على إعدادات السيرفر التي توفرها الإضافات الأصلية.
التجديد التلقائي
في معظم الحالات، يجب أن يقوم Certbot بإعداد تجديد الشهادة تلقائيًا عبر cronjob و/أو systemd timer. يمكنك التأكد من ذلك عبر تشغيل الأمر التالي الذي يستخدم معامل --dry-run لاختبار العملية.
certbot renew --dry-run
كما ذُكر سابقًا، طريقة DNS-01 لا تدعم التجديد التلقائي عبر Certbot إلا إذا قمت بإعداد بنية تحتية خاصة لإدارتها. لذلك يُنصح بشدة باستخدام طريقة HTTP-01.
يجب أن تنجح العملية إذا كان كل شيء كما هو متوقع. إذا أردت عرض أو تعديل التجديد التلقائي، ستجد الأمر في أحد المواقع التالية: /etc/crontab/، /etc/cron.*/* أو عبر systemctl list-timers.
إعداد Cronjob يدويًا
إذا لم يتم إعداد التجديد التلقائي لأي سبب، يمكنك إضافته بنفسك عبر cronjob. افتح قائمة crontab باستخدام الأمر crontab -e. إذا كانت هذه أول مرة تستخدم فيها، قد يُطلب منك اختيار محرر. اختر الخيار الأول، والذي عادةً ما يكون /bin/nano.
مع فتح الملف في nano، أضف السطر التالي لتشغيل التجديد يوميًا الساعة 6 صباحًا بالتوقيت المحلي.
0 6 * * * certbot renew
احفظ الملف واخرج من nano باستخدام CTRL + X، ثم Y للتأكيد وأخيرًا ENTER.
الخاتمة
لقد قمت بإعداد Certbot بنجاح لنطاقاتك عبر عدة طرق منها standalone، webroot أو عبر إحدى الإضافات، مما يوفر لموقعك نقل بيانات آمن عبر HTTPS. لأي أسئلة أو مساعدة إضافية، لا تتردد في التواصل مع فريق الدعم لدينا، المتوفر يوميًا لمساعدتك! 🙂