يوضح لك هذا الدليل كيفية إنشاء CSR (طلب توقيع الشهادة) على Debian باستخدام سطر أوامر OpenSSL. تُنفّذ أمرًا واحدًا عبر SSH ينشئ ملفين في الوقت نفسه: مفتاحًا خاصًا يبقى على خادمك، وملف CSR الذي تُرسله إلى جهة إصدار الشهادات (CA). تعمل هذه الخطوات على Debian 13 (trixie) وDebian 12 (bookworm) والإصدارات السابقة، لأن OpenSSL مدمج ضمن النظام الأساسي.
CSR هو كتلة نصية صغيرة تحتوي على تفاصيل نطاقك ومفتاح عام. تقرأ جهة الإصدار (CA) هذا الملف، وتتحقق من صحة طلبك، وتُصدر شهادة تتطابق مع المفتاح الخاص الذي تم إنشاؤه معه. لا يغادر المفتاح الخاص خادمك أبدًا، فاحتفظ به بأمان: إذا فقدته، تصبح الشهادة الصادرة غير قابلة للاستخدام وعليك البدء من جديد.
الخطوة 1: تسجيل الدخول إلى خادم Debian
افتح موجه الأوامر واتصل بالخادم عبر SSH. استبدل your-user باسم حسابك وyour-server-ip بعنوان IP الخاص بالخادم أو اسم المضيف:
ssh your-user@your-server-ip
OpenSSL مضمّن في نظام Debian الأساسي، فلا حاجة لتثبيت أي شيء إضافي. للتأكد من توفره، تحقق من الإصدار:
openssl version
الخطوة 2: إنشاء المفتاح الخاص وملف CSR
نفّذ الأمر أدناه. ينشئ هذا الأمر المفتاح الخاص وملف CSR في خطوة واحدة، ويتضمن أسماء بديلة للموضوع (SANs) التي تتطلبها المتصفحات الحديثة وجهات الإصدار. نفّذه من دليل يمكنك الكتابة فيه، مثل دليلك الرئيسي:
openssl req -new -newkey rsa:2048 -nodes
-keyout mywebsite.key
-out mywebsite.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mywebsite.com"
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"
هذا ما يفعله كل جزء:
- req -new ينشئ طلب توقيع شهادة جديد.
- -newkey rsa:2048 يُنشئ مفتاحًا خاصًا جديدًا من نوع RSA بطول 2048 بت. يُعد 2048 بت الحد الأدنى الحالي للشهادات العامة؛ يمكنك استخدام rsa:4096 للحصول على مفتاح أكبر.
- -nodes يترك المفتاح الخاص غير مشفّر (بدون عبارة مرور)، حتى يتمكن خادم الويب من البدء دون طلب كلمة مرور.
- -keyout mywebsite.key يكتب المفتاح الخاص. احتفظ بهذا الملف سريًا ولا ترسله لأي شخص أبدًا.
- -out mywebsite.csr يكتب ملف CSR الذي تُرسله إلى جهة الإصدار.
- -subj يملأ حقول الموضوع مباشرة داخل الأمر، بحيث يعمل الأمر دون طلبات تفاعلية. اضبط CN (الاسم الشائع) على اسم النطاق المؤهل بالكامل الخاص بك.
- -addext “subjectAltName=…” يضيف مدخلات SAN. تُصدر جهات الإصدار الشهادات وفقًا لقائمة SAN، لذا أدرج كل اسم مضيف يجب أن تغطيه الشهادة.
استبدل mywebsite.com بنطاقك الحقيقي، وعدّل قيم -subj بما يتوافق مع مؤسستك. يجب أن يكون رمز الدولة المكوّن من حرفين (C) بحروف كبيرة، مثل US أو GB. بالنسبة للشهادات المُوثّقة على مستوى النطاق (DV)، لا يتم التحقق من حقول المؤسسة، لكن الأمر يحتاج مع ذلك إلى قيم صالحة.
إذا كنت تفضّل تعبئة الحقول بشكل تفاعلي بدلاً من استخدام -subj، أزل ذلك السطر، وسيطلب منك OpenSSL كل قيمة على حدة:
openssl req -new -newkey rsa:2048 -nodes
-keyout mywebsite.key
-out mywebsite.csr
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"
عند الطلب، اترك عبارة مرور التحدي (challenge password) واسم الشركة الاختياري خاليين بالضغط على Enter. تتجاهل جهات الإصدار هذه الحقول، وقد تتسبب عبارة مرور التحدي في مشاكل لاحقًا.
إضافة نطاقات أخرى أو نطاق شامل (wildcard)
أضف أسماء مضيفين إضافية إلى قائمة SAN، مفصولة بفواصل. على سبيل المثال، لتضمين نطاق فرعي للـ API:
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com,DNS:api.mywebsite.com"
للحصول على شهادة نطاق شامل (wildcard)، استخدم *.mywebsite.com. تغطي الشهادة الشاملة مستوى واحدًا من النطاقات الفرعية لكنها لا تغطي النطاق الأساسي نفسه، لذا أدرج كليهما إذا كنت تريد تغطية النطاق الجذري أيضًا:
-addext "subjectAltName=DNS:*.mywebsite.com,DNS:mywebsite.com"
تفضّل مفتاح ECDSA؟
مفاتيح ECDSA أصغر حجمًا وأسرع من RSA عند نفس مستوى الأمان، وهي مدعومة على نطاق واسع. لإنشاء مفتاح P-256 (prime256v1) وCSR بدلاً من ذلك، غيّر معامل -newkey:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout mywebsite.key
-out mywebsite.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mywebsite.com"
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"
يوقّع OpenSSL الحديث ملف CSR بخوارزمية SHA-256 بشكل افتراضي، وهو ما تتطلبه جهات الإصدار. لا حاجة لإضافة علامة اختصار (digest) منفصلة.
الخطوة 3: التحقق من ملف CSR
قبل إرسال الطلب، تأكد من أنه يحتوي على النطاق الصحيح ومدخلات SAN الصحيحة، وأن توقيعه صالح. يعرض هذا الأمر المحتوى بعد فكّ الترميز ويتحقق من التوقيع محليًا:
openssl req -noout -text -verify -in mywebsite.csr
ابحث عن عبارة verify OK في المخرجات، وتحقق من أن سطر Subject يعرض اسمك الشائع (Common Name)، وتأكد من أن قسم X509v3 Subject Alternative Name يسرد كل اسم مضيف تتوقعه. إذا كان أحد مدخلات SAN مفقودًا، أعد إنشاء ملف CSR بقيمة -addext الصحيحة. يمكنك أيضًا لصق ملف CSR في أداة فك تشفير CSR عبر الإنترنت للتحقق من هذه الحقول في متصفحك.
الخطوة 4: إرسال ملف CSR
افتح ملف CSR وانسخ محتواه بالكامل، بما في ذلك سطري BEGIN وEND:
cat mywebsite.csr
تبدو الكتلة على النحو التالي. انسخ كل شيء من السطر الأول إلى الأخير، بما في ذلك الشرطات الخمس على جانبي علامتي BEGIN وEND:
-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----
لصق هذه الكتلة في نموذج طلب شهادة SSL الخاص بك. بعد أن تتحقق جهة الإصدار من ملف CSR وتُصدر شهادة SSL، اتبع تعليمات تثبيت SSL على Debian لنشرها. احتفظ بملف mywebsite.key على الخادم: ستحتاجه مع الشهادة الصادرة لتفعيل HTTPS، ويجب ألا ترسله إلى جهة الإصدار أو لأي شخص آخر مطلقًا.
إذا كنت تفضّل عدم استخدام سطر الأوامر، يمكنك إنشاء الطلب باستخدام مُولّد CSR الخاص بنا ولصق النتيجة في طلبك.
إنشاء CSR على أنظمة أساسية أخرى
هل تستخدم توزيعة لينكس أو خادمًا مختلفًا؟ راجع أدلة CSR الأخرى الخاصة بنا:
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

