bg-tutorials

كيفية تثبيت شهادة SSL على CentOS

في هذا الدليل، ستتعلم كيفية تثبيت شهادة SSL على CentOS وإصداراتها اللاحقة من عائلة RHEL (AlmaLinux و Rocky Linux و CentOS Stream) باستخدام خادم الويب Apache httpd.

قمنا أيضًا بتسجيل فيديو يشرح لك العملية بأكملها خطوة بخطوة. إذا كنت تفضل النسخة النصية، تابع القراءة أدناه.


إنشاء رمز CSR

عند التقديم للحصول على شهادة SSL، تقوم أولًا بإنشاء CSR (طلب توقيع الشهادة) وترسله إلى الجهة المصدرة للشهادات (CA). CSR هو مقطع نصي يحتوي على تفاصيل الاتصال والنطاق الخاص بك، ويرتبط بمفتاح خاص يُنشأ في الوقت نفسه. لديك خياران:

قدّم CSR إلى الجهة المصدرة للشهادات (CA) عند إتمام الشراء. بعد أن تتحقق الجهة المصدرة من صحته وتصدر شهادتك، تابع عملية التثبيت أدناه.

تثبيت شهادة SSL على CentOS / RHEL (Apache)

ملاحظة مهمة بخصوص الإصدارات: بلغ CentOS Linux 8 نهاية دعمه في 31 ديسمبر 2021، وبلغ CentOS Linux 7 نهاية دعمه في 30 يونيو 2024. للبيئات الإنتاجية، استخدم توزيعة مدعومة من عائلة RHEL بدلًا من ذلك: RHEL 8/9/10 أو AlmaLinux أو Rocky Linux أو CentOS Stream. جميعها تشترك في نفس هيكلية Apache httpd، لذا تنطبق الخطوات أدناه على كل واحدة منها.

قبل أن تبدأ

بعد التحقق، ترسل الجهة المصدرة للشهادات (CA) رسالة بريد إلكتروني تحتوي على ملفات الشهادة. تأكد من أن لديك هذه الملفات الثلاثة المنفصلة جاهزة:

  • yourdomain.crt، شهادة SSL الأساسية الخاصة بك.
  • yourdomain.ca-bundle، الشهادات الوسيطة (حزمة CA).
  • yourdomain.key، المفتاح الخاص الذي أنشأته مع CSR.

مهم: لا تُدرج المفتاح الخاص أبدًا ضمن سلسلة الشهادة. يجب أن يبقى المفتاح في ملف خاص به، لا يمكن قراءته إلا من قبل المستخدم root.

الخطوة 1: تثبيت دعم TLS (mod_ssl)

ثبّت mod_ssl، الذي يضيف دعم TLS إلى Apache وينشئ ملف تهيئة افتراضي لـ TLS في /etc/httpd/conf.d/ssl.conf:

sudo dnf install -y mod_ssl

على الأنظمة القديمة التي لا تزال تستخدم مدير الحزم yum، شغّل sudo yum install -y mod_ssl بدلًا من ذلك.

الخطوة 2: وضع ملفات SSL في مكانها

انسخ المفتاح الخاص إلى /etc/pki/tls/private/ وقيّد صلاحياته بحيث يمكن لـ root فقط قراءته:

sudo cp yourdomain.key /etc/pki/tls/private/
sudo chown root:root /etc/pki/tls/private/yourdomain.key
sudo chmod 600 /etc/pki/tls/private/yourdomain.key

بعد ذلك، أنشئ ملف السلسلة الكاملة بدمج شهادتك مع حزمة CA، وضعه في /etc/pki/tls/certs/:

cat yourdomain.crt yourdomain.ca-bundle 
  | sudo tee /etc/pki/tls/certs/yourdomain-fullchain.crt > /dev/null

يجب أن يحتوي ملف السلسلة الكاملة فقط على الشهادة العامة والسلسلة الوسيطة، وليس على المفتاح الخاص أبدًا.

الخطوة 3: تهيئة المضيف الافتراضي لـ TLS في Apache

يمكنك تعديل الملف الافتراضي /etc/httpd/conf.d/ssl.conf الذي أنشأه mod_ssl، أو (بشكل أنظف) إنشاء ملف مخصص لموقعك، على سبيل المثال /etc/httpd/conf.d/yourdomain.conf. افتحه بمحرر نصوص:

sudo nano /etc/httpd/conf.d/yourdomain.conf

أضف مضيفًا افتراضيًا للمنفذ 80 يعيد توجيه كل حركة المرور إلى HTTPS، تليه كتلة المضيف الافتراضي الآمن للمنفذ 443 التي تحتوي على توجيهات SSL الخاصة بك:

<VirtualHost *:80>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  Redirect permanent / https://yourdomain.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  DocumentRoot /var/www/yourdomain.com

  SSLEngine on
  SSLCertificateFile    /etc/pki/tls/certs/yourdomain-fullchain.crt
  SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
</VirtualHost>
  • SSLCertificateFile، ملف السلسلة الكاملة (الشهادة + الشهادات الوسيطة). في Apache 2.4.8 والإصدارات الأحدث، يحل هذا التوجيه الواحد محل التوجيه المُهمَل SSLCertificateChainFile.
  • SSLCertificateKeyFile، المفتاح الخاص الذي أنشأته مع CSR.

ملاحظة حول المضيف الافتراضي الافتراضي: يوفّر ملف mod_ssl /etc/httpd/conf.d/ssl.conf كتلة <VirtualHost _default_:443> خاصة به مع شهادة موقعة ذاتيًا. عند إضافة مضيف *:443 خاص بموقعك كما هو مذكور أعلاه، فإن الطلبات المطابقة لـ ServerName الخاص بك تستخدم شهادتك، لكن طلبات HTTPS غير المطابقة (مثل الوصول إلى الخادم عبر عنوان IP الخاص به) لا تزال تعود إلى ذلك المضيف الافتراضي الموقّع ذاتيًا. إذا كنت لا تريد هذا الرجوع الاحتياطي، علّق كتلة <VirtualHost _default_:443> في ssl.conf أو وجّهها إلى شهادتك الخاصة.

ملاحظة حول تعزيز أمان TLS: يتبع Apache على RHEL 8 والإصدارات الأحدث سياسة التشفير على مستوى النظام بالكامل، والتي تعطّل بالفعل البروتوكولات القديمة. لتعيين السياسة على مستوى الخادم بالكامل، شغّل sudo update-crypto-policies --set DEFAULT (أو FUTURE لإعدادات أكثر صرامة). إذا كنت تفضل تحديد البروتوكولات لكل مضيف افتراضي على حدة، أضف SSLProtocol -all +TLSv1.2 +TLSv1.3 داخل كتلة المنفذ 443.

الخطوة 4: اختبار تهيئة Apache

تحقق دائمًا من الصياغة قبل إعادة التحميل، لأن خطأ إملائي واحد قد يؤدي إلى تعطل الموقع:

sudo apachectl configtest

يجب أن تشاهد Syntax OK. (الأمر sudo httpd -t يقوم بالشيء نفسه.) صحّح أي أخطاء يتم الإبلاغ عنها قبل الاستمرار.

الخطوة 5: إعادة تشغيل Apache

طبّق التغييرات بإعادة تحميل خدمة httpd (تفعّل إعادة التحميل التهيئة الجديدة دون قطع الاتصالات الحية):

sudo systemctl reload httpd

إذا لم تكن خدمة httpd تعمل بعد، شغّلها باستخدام sudo systemctl enable --now httpd. يجب أن يعمل موقعك الآن عبر HTTPS. للتحقق من النتيجة والحصول على تقرير حالة فوري، استخدم فاحص SSL الخاص بنا.

ملاحظات بخصوص إصدارات CentOS القديمة (7 وما قبلها)

جميع إصدارات CentOS Linux 7 و 6 و 8 قد تجاوزت نهاية دعمها ولا تحصل على تحديثات أمنية بعد الآن، لذا انتقل إلى توزيعة مدعومة من عائلة RHEL عندما يمكنك ذلك. إذا كان لا بد من العمل على خادم قديم، فإن العملية مماثلة لما سبق، مع وجود اختلافين:

  • مدير الحزم: يستخدم CentOS 7 و 6 yum بدلًا من dnf. تحقق مما إذا كان mod_ssl مثبتًا مسبقًا باستخدام rpm -qa | grep mod_ssl، وإذا لم يكن مثبتًا، ثبّته باستخدام sudo yum install -y mod_ssl.
  • Apache أقدم من 2.4.8: فقط الإصدارات القديمة جدًا تسبق 2.4.8. في هذه الحالة، احتفظ بالشهادة والسلسلة في ملفات منفصلة وأضف توجيهًا ثالثًا، SSLCertificateChainFile، يشير إلى حزمة CA (وليس إلى شهادتك):
SSLCertificateFile      /etc/pki/tls/certs/yourdomain.crt
SSLCertificateKeyFile   /etc/pki/tls/private/yourdomain.key
SSLCertificateChainFile /etc/pki/tls/certs/yourdomain.ca-bundle

في Apache 2.4.8 والإصدارات الأحدث (التي تشمل كل الإصدارات المدعومة حاليًا)، استخدم بدلًا من ذلك التوجيه الأبسط ذا الملف الواحد للسلسلة الكاملة SSLCertificateFile المذكور في الخطوة 3.

أين تشتري شهادة SSL لـ CentOS؟

أفضل مكان لشراء شهادة SSL لخادم CentOS الخاص بك هو موزع SSL موثوق مثل SSL Dragon. أسعارنا من بين الأدنى في السوق، ونقدم خصومات منتظمة وعروضًا رائعة على مجموعتنا الكاملة من منتجات SSL، مدعومة بدعم عملاء متميز. جميع شهاداتنا متوافقة مع CentOS وإصداراتها اللاحقة من عائلة RHEL.

تتولى SSL Dragon حماية بياناتك الحساسة، حتى يتمكن موقعك أو عملك من النجاح على الإنترنت.

الأسئلة الشائعة

كيف أعرف ما إذا كانت شهادة SSL مثبّتة على CentOS؟

اتصل بموقعك باستخدام OpenSSL واقرأ الشهادة التي يقدمها:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
إذا كانت الشهادة مثبتة، فسيطبع هذا الأمر الجهة المصدرة لها وتواريخ صلاحيتها. لفحص ملف شهادة موجود على القرص بدلًا من ذلك، شغّل openssl x509 -text -noout -in certificate.crt. يمكنك أيضًا عرض قائمة المضيفات الافتراضية النشطة في Apache باستخدام sudo apachectl -S، أو فتح موقعك في المتصفح والتحقق من رمز القفل.

أين تُخزَّن شهادات SSL في CentOS؟

حسب المعتاد، توضع الشهادات في /etc/pki/tls/certs/ والمفاتيح الخاصة في /etc/pki/tls/private/. هذه هي المسارات الافتراضية في عائلة RHEL؛ يمكنك استخدام مواقع أخرى شرط أن يشير المضيف الافتراضي إليها.

أين يقع ملف تهيئة SSL في Apache على CentOS؟

تثبّت وحدة TLS إعداداتها الافتراضية في /etc/httpd/conf.d/ssl.conf، وملف تهيئة Apache الرئيسي هو /etc/httpd/conf/httpd.conf. يمكنك إضافة مضيفاتك الافتراضية إلى ssl.conf، ولكن من الأنظف إنشاء ملف مخصص لكل موقع مثل /etc/httpd/conf.d/yourdomain.conf. يتم تحميل أي ملف .conf في /etc/httpd/conf.d/ تلقائيًا. تتواجد سجلات Apache في /var/log/httpd/.

هل أحتاج إلى دمج الشهادة وحزمة CA على CentOS؟

في Apache 2.4.8 والإصدارات الأحدث (كل إصدار مدعوم حاليًا من عائلة RHEL)، نعم: قم بدمج شهادتك مع حزمة CA في ملف سلسلة كاملة واحد وأشر إليه من خلال SSLCertificateFile. توجيه SSLCertificateChainFile المنفصل مُهمَل ولا يُحتاج إليه إلا في إصدارات Apache الأقدم من 2.4.8.

كيف أثبّت OpenSSL على CentOS؟

يأتي OpenSSL مثبتًا مسبقًا على CentOS وعلى كل توزيعة لينكس رئيسية أخرى، لذا لا تحتاج غالبًا إلى تثبيته. إذا كان غير موجود، أضفه باستخدام sudo dnf install -y openssl (أو sudo yum install -y openssl على CentOS 7 وما قبله). تعرّف على المزيد حول OpenSSL وأوامره في سطر الأوامر.

خلاصة القول

تثبيت شهادة SSL على CentOS أو RHEL باستخدام Apache يقتصر على تثبيت mod_ssl، ووضع مفتاحك الخاص وشهادة السلسلة الكاملة تحت /etc/pki/tls/، وتهيئة كتلة <VirtualHost *:443> في /etc/httpd/conf.d/، والاختبار باستخدام sudo apachectl configtest، وإعادة التحميل باستخدام sudo systemctl reload httpd. تحتاج إلى شهادة أولًا؟ تصفح شهادات SSL لدينا.

وفِّر 10% على شهادات SSL عند الطلب اليوم!

إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

صورة مفصلة لتنين أثناء طيرانه

كاتب محتوى متمرس متخصص في شهادات SSL. تحويل موضوعات الأمن السيبراني المعقدة إلى محتوى واضح وجذاب. المساهمة في تحسين الأمن الرقمي من خلال السرد المؤثر.