bg-tutorials

كيفية إنشاء CSR على Webmin

يوضح لك هذا الدليل كيفية إنشاء CSR (طلب توقيع الشهادة) على Webmin. يُعد Webmin لوحة تحكم تعمل عبر المتصفح لخوادم Linux، لذا لديك طريقتان عمليتان لإنشاء CSR: من خلال وحدات SSL المدمجة في Webmin (نموذج رسومي للوحة Webmin نفسها أو لمضيف Apache الافتراضي) أو باستخدام سطر أوامر OpenSSL عبر الطرفية المدمجة في Webmin. طريقة OpenSSL هي الأكثر مرونة وتُنتج مفتاحاً و CSR يمكنك استخدامهما مع أي خادم ويب (Apache، Nginx، Lighttpd، أو أي شيء آخر يديره Webmin).

تفترض الخطوات أدناه استخدام إصدار Webmin 2.x الحديث و OpenSSL 3.x، وهما الإصداران الحاليان على كل توزيعة Linux مدعومة في 2026 (Ubuntu 22.04 / 24.04 / 26.04، Debian 12 و13، RHEL 9 و10، Rocky 9 و10، AlmaLinux 9 و10، openSUSE Leap 15.6 وTumbleweed). الناتج هو CSR قياسي مُرمّز بصيغة PEM وموقّع باستخدام SHA-256، وهو ما تقبله أي جهة إصدار شهادات (CA) عامة.

الخطوة 1: تسجيل الدخول إلى Webmin

افتح Webmin في المتصفح على عنوان URL الخاص بخادمك عبر المنفذ 10000:

https://yourwebsite.com:10000

استبدل yourwebsite.com باسم مضيف خادمك أو عنوان IP الخاص به. المنفذ 10000 هو المنفذ الافتراضي لـ Webmin. سجّل الدخول باستخدام حساب root أو مستخدم Webmin لديه صلاحية إدارة SSL.

الخطوة 2: فتح طرفية Webmin

يأتي Webmin 2.x مزوداً بطرفية مدمجة يمكنك استخدامها دون فتح جلسة SSH منفصلة. في اللوحة اليسرى، أسفل رابط Refresh Modules مباشرةً، انقر على أيقونة Terminal (ثاني أيقونة من اليسار)، أو اضغط Alt + K لفتحها. ستظهر واجهة سطر الأوامر، تعمل بصفتك المستخدم الذي سجّلت الدخول به.

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

الخطوة 3: إنشاء المفتاح الخاص وCSR باستخدام OpenSSL

في الطرفية، نفّذ الأمر أدناه. يُنشئ مفتاح RSA بحجم 2048 بت وCSR مطابقاً في خطوة واحدة، مع توفير الموضوع (subject) وأسماء بديلة للموضوع (SANs) مباشرةً ضمن الأمر بحيث لا يتوقف OpenSSL لطرح أسئلة تفاعلية:

sudo openssl req -new -newkey rsa:2048 -noenc 
-keyout /etc/ssl/private/yourwebsite.com.key 
-out /etc/ssl/private/yourwebsite.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com" 
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"

على Debian وUbuntu، يوجد المسار /etc/ssl/private/ مسبقاً. على RHEL وRocky وAlmaLinux وFedora، العُرف المتّبع هو /etc/pki/tls/private/ للمفاتيح و/etc/pki/tls/certs/ لملف CSR. اختر مسارات يمكن لخادم الويب لديك قراءتها، أو احفظ الملفات في مجلدك الشخصي ثم انقلها لاحقاً. إذا لم يكن المجلد الهدف موجوداً، أنشئه أولاً باستخدام sudo mkdir -p /etc/ssl/private.

وظيفة كل جزء من الأمر:

  • -newkey rsa:2048 يُنشئ مفتاح RSA جديداً بحجم 2048 بت. يُعد 2048 بت الحد الأدنى الحالي للشهادات العامة. استخدم rsa:4096 لمفتاح أكبر حجماً، أو انتقل إلى ECDSA (انظر أدناه).
  • -noenc يترك المفتاح الخاص غير مشفّر بحيث يمكن لخادم الويب قراءته عند بدء التشغيل دون طلب عبارة مرور. (في OpenSSL 1.x، الخيار المكافئ هو -nodes؛ ولا يزال كلاهما يعمل في OpenSSL 3.x.)
  • -keyout و-out يحدّدان اسم ملف المفتاح الخاص وملف CSR.
  • -subj يوفّر موضوع الشهادة مباشرةً ضمن الأمر. استبدل القيم الواردة في المثال بتفاصيلك الفعلية:
    • C: رمز الدولة المكوّن من حرفين حيث تكون مؤسستك مسجّلة قانونياً (على سبيل المثال، US).
    • ST: الاسم الكامل للولاية أو المقاطعة (على سبيل المثال، California)، دون اختصارات.
    • L: الاسم الكامل للمدينة أو البلدة (على سبيل المثال، San Jose).
    • O: الاسم القانوني للمؤسسة. بالنسبة لشهادة التحقق من النطاق (DV)، اتركه فارغاً أو اضبطه على نطاقك.
    • CN: اسم النطاق المؤهل بالكامل (FQDN) للموقع الذي تريد تأمينه (على سبيل المثال، yourwebsite.com).
  • -addext “subjectAltName=…” يسرد كل اسم مضيف يجب أن تغطيه الشهادة. تتحقق جهات إصدار الشهادات العامة من قائمة SAN، لذا أدرج الاسم الشائع (Common Name) هنا أيضاً. بالنسبة لشهادة عامة (wildcard)، أدرج كلاً من النطاق العام والنطاق الأساسي: DNS:*.yourwebsite.com,DNS:yourwebsite.com. تغطي الشهادات العامة مستوى واحداً من النطاقات الفرعية ولا تطابق النطاق الأساسي بمفردها.

إذا كنت تفضل مفتاح ECDSA (أصغر حجماً وأسرع، مع دعم واسع لمنحنى P-256)، استخدم هذا البديل بدلاً من ذلك:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -noenc 
-keyout /etc/ssl/private/yourwebsite.com.key 
-out /etc/ssl/private/yourwebsite.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com" 
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"

الشرطة المائلة العكسية في نهاية كل سطر هي علامة استكمال السطر في الصدفة (shell)، لذا يبقى الأمر تعليمة منطقية واحدة مقسّمة على عدة أسطر لسهولة القراءة. إذا كانت طرفيتك لا تتعامل جيداً مع الصيغة متعددة الأسطر، الصق الأمر بالكامل في سطر واحد.

الخطوة 4: حماية المفتاح الخاص

اعرض محتويات المجلد للتأكد من إنشاء الملفين:

sudo ls -l /etc/ssl/private/yourwebsite.com.*

يجب أن ترى ملفين جديدين:

  • yourwebsite.com.key: المفتاح الخاص. يجب أن يبقى على الخادم، ويجب ألا يُرسل مطلقاً إلى جهة إصدار الشهادات، ويجب ألا يُرسل عبر البريد الإلكتروني أو يُلصق في أي نموذج. من يمتلك هذا المفتاح يمكنه انتحال هوية موقعك.
  • yourwebsite.com.csr: طلب توقيع الشهادة. هذا هو الملف الوحيد الذي تُرسله إلى مزوّد SSL.

قيّد صلاحيات الوصول إلى المفتاح الخاص بحيث لا يستطيع قراءته سوى root:

sudo chmod 600 /etc/ssl/private/yourwebsite.com.key

على التوزيعات التي يكون فيها SELinux مفعّلاً (RHEL، Rocky، AlmaLinux، Fedora)، أعد تطبيق سياق SELinux الصحيح بعد نقل المفتاح إلى موقعه النهائي، على سبيل المثال sudo restorecon -Rv /etc/pki/tls/.

الخطوة 5: التحقق من CSR (اختياري لكن يُنصح به)

قبل إرسال CSR، تأكد من احتوائه على الموضوع الصحيح وقوائم SAN الصحيحة، ومن أن توقيعه صالح:

openssl req -noout -text -verify -in /etc/ssl/private/yourwebsite.com.csr

تحقق من أن سطر Subject يطابق تفاصيلك، وأن X509v3 Subject Alternative Name يسرد كل اسم مضيف تتوقعه، وأن فحص التوقيع يطبع verify OK. يجب أن تكون خوارزمية التوقيع sha256WithRSAEncryption (أو ecdsa-with-SHA256 لمفتاح ECDSA). إذا كنت تفضل عدم استخدام سطر الأوامر، الصق نص CSR في أداة فك تشفير CSR عبر الإنترنت لقراءة نفس الحقول في المتصفح.

الخطوة 6: نسخ CSR وإرساله

اطبع CSR حتى تتمكن من نسخه:

sudo cat /etc/ssl/private/yourwebsite.com.csr

سترى كتلة نص تشبه هذه:

-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

انسخ الكتلة بأكملها، بما في ذلك سطري —–BEGIN CERTIFICATE REQUEST—– و—–END CERTIFICATE REQUEST—– (كل علامة تحتوي على خمس شرطات على كل جانب). الصقها في نموذج الطلب عند شراء شهادة SSL الخاصة بك، واترك المفتاح الخاص المطابق في مكانه على الخادم.

إنشاء CSR عبر وحدات Webmin الرسومية

إذا كنت تفضل تجنب سطر الأوامر، يتضمن Webmin نموذجين رسوميين يُنشئان CSR نيابةً عنك. اختر الذي يناسب الغرض من الشهادة.

لمضيف Apache الافتراضي (موقعك)

  • انتقل إلى Servers > Apache Webserver.
  • افتح علامة التبويب Global Configuration، انقر على Configure Apache Modules، ضع علامة على وحدة ssl، وانقر على Enable Selected Modules إذا لم تكن مفعّلة مسبقاً.
  • في علامة التبويب Existing virtual hosts، افتح المضيف الافتراضي على المنفذ 443 (أو أنشئ واحداً) بالنقر على أيقونة الكرة الأرضية الخاصة به.
  • في صفحة Virtual Server Options، اختر SSL Options، ثم انقر على Create signing request.
  • املأ النموذج (الدولة، الولاية، المدينة، المؤسسة، الاسم الشائع، البريد الإلكتروني، حجم المفتاح 2048 أو أكبر، وأي أسماء بديلة للموضوع)، اختر أين يجب أن يكتب Webmin ملفي .csr و.key، وانقر على Create Now.

يظهر الملفان في المسارات التي حدّدتها. استخدم .csr لطلبك واحتفظ بـ .key على الخادم.

للوحة Webmin نفسها (المنفذ 10000)

إذا كنت بحاجة إلى شهادة لواجهة تسجيل دخول Webmin فقط، وليس لموقع ويب، أنشئ CSR من وحدة إعدادات Webmin:

  • انتقل إلى Webmin > Webmin Configuration > SSL Encryption.
  • افتح علامة التبويب Create Signing Request.
  • املأ اسم المضيف (الاسم العام الذي تصل من خلاله إلى Webmin)، والدولة، والولاية، والمدينة، والمؤسسة، والبريد الإلكتروني، وحجم المفتاح، ثم انقر على Create.

يكتب Webmin الطلب والمفتاح المطابق تحت /etc/webmin/. بعد أن تُعيد جهة إصدار الشهادات (CA) الشهادة الصادرة، ثبّتها من نفس صفحة SSL Encryption بحيث تحل محل ملف /etc/webmin/miniserv.pem الافتراضي.

بعد استلام الشهادة

بمجرد أن تتحقق جهة إصدار الشهادات من CSR الخاص بك وتصدر الشهادة، ثبّتها على الخادم. تعتمد الخطوات الدقيقة على الخدمة التي تخصها الشهادة:

إذا كنت تفضل سير عمل رسومي بالكامل يعمل في متصفحك، يمكنك أيضاً إنشاء CSR باستخدام أداة إنشاء CSR عبر الإنترنت. تُنشئ الأداة المفتاح الخاص في متصفحك، لذا احفظ المفتاح بنفسك وانقله إلى الخادم قبل إتمام عملية التثبيت.

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

أين يخزّن Webmin ملف CSR والمفتاح الخاص؟

أينما تحدّد له ذلك. مع أمر OpenSSL، تُكتب الملفات في المسارات التي تمررها مع -keyout و-out. مع نموذج Create signing request الخاص بوحدة Apache، تختار مسارات الإخراج في النموذج نفسه. مع Webmin > Webmin Configuration > SSL Encryption، يكتبها Webmin تحت /etc/webmin/. على Debian وUbuntu، المكان المتعارف عليه للمفاتيح هو /etc/ssl/private/؛ وعلى RHEL وRocky وAlmaLinux وFedora هو /etc/pki/tls/private/.

هل يجب استخدام طرفية Webmin، أم يمكنني الاتصال عبر SSH؟

كلاهما يعمل. طرفية Webmin المدمجة (الأيقونة في اللوحة اليسرى، أو Alt + K) مريحة لأنك مسجّل الدخول بالفعل، لكن نفس أمر OpenSSL عند تنفيذه عبر جلسة SSH عادية يُنتج CSR ومفتاحاً متطابقين. استخدم أياً منهما تجده أسهل.

ما الفرق بين -noenc و -nodes؟

كلاهما يقوم بنفس الشيء: إخبار OpenSSL بترك المفتاح الخاص غير مشفّر على القرص بحيث يمكن لخادم الويب قراءته عند بدء التشغيل دون طلب عبارة مرور. -nodes هو الاسم التاريخي ولا يزال يعمل في OpenSSL 3.x. -noenc هو البديل الأحدث الذي تم تقديمه في OpenSSL 3.0 وهو الصيغة المفضّلة للاستخدام مستقبلاً. استخدم أياً منهما حسب عادتك.

هل CSR من Webmin مطابق لذلك الناتج من أي أداة أخرى؟

نعم. CSR هو طلب قياسي مُرمّز بصيغة PEM ومحدّد وفق PKCS #10، وأي جهة إصدار شهادات (CA) يمكنها توقيعه بغض النظر عن مكان إنشائه. سواء أنشأت CSR في طرفية Webmin، أو من خلال نموذج Create signing request الخاص بوحدة Apache، أو باستخدام أداة إنشاء CSR عبر الإنترنت، فكلها تُنتج نفس نوع الملف. المهم هو أن المفتاح الخاص الذي تم إنشاؤه في الوقت نفسه يبقى على الخادم الذي تخطط لتثبيت الشهادة عليه.

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

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

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

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