bg-tutorials

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

يوضح لك هذا الدليل كيفية إنشاء CSR على lighttpd باستخدام سطر أوامر OpenSSL على نفس الخادم الذي يشغّل خادم الويب lighttpd. ستقوم بإنشاء ملفين بأمر واحد: مفتاح خاص جديد وطلب توقيع الشهادة (CSR) المطابق الذي تقدمه إلى جهة إصدار الشهادات الخاصة بك.

تعمل الخطوات أدناه على كل توزيعة لينكس حديثة تحزّم lighttpd (Debian وUbuntu وRHEL وAlmaLinux وRocky Linux وFedora وopenSUSE وAlpine)، حيث تأتي كل منها مع OpenSSL 1.1.1 أو OpenSSL 3.x. يوقّع كلا الإصدارين الطلب باستخدام SHA-256 افتراضيًا، لذا لست بحاجة لإضافة علامة خوارزمية تلخيص. يعمل نفس الأمر أيضًا على FreeBSD وعلى macOS مع lighttpd.

الخطوة 1: الاتصال بخادم lighttpd الخاص بك

افتح الطرفية (Terminal) على macOS أو Linux، أو PowerShell أو Windows Terminal على Windows، واتصل بالخادم عبر SSH. استبدل اسم المستخدم والمضيف بالخاصين بك:

ssh your-user@your-lighttpd-server

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

sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl

الخطوة 2: إنشاء المفتاح الخاص وCSR

إذا كنت قد أنشأت بالفعل CSR الخاص بك باستخدام أداة أخرى، تخطَّ إلى تثبيت الشهادة على lighttpd.

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

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

ماذا يفعل كل جزء:

  • -newkey rsa:2048 ينشئ مفتاح RSA جديد بحجم 2048 بت. حجم 2048 بت هو الحد الأدنى الحالي للشهادات العامة؛ يمكنك استخدام rsa:4096 للحصول على مفتاح أكبر، أو التحول إلى ECDSA (انظر أدناه).
  • -nodes يترك المفتاح الخاص غير مشفّر حتى يتمكن lighttpd من قراءته عند بدء التشغيل دون مطالبة بعبارة مرور.
  • -keyout و-out يسمّيان ملفات المفتاح الخاص وCSR.
  • -subj يوفّر موضوع الشهادة. ضع اسم شركتك الحقيقي، والولاية، والمدينة هنا، وليس القيم النائبة. CN (الاسم الشائع) هو نطاقك الأساسي.
  • -addext “subjectAltName=…” يسرد كل اسم مضيف يجب أن تغطيه الشهادة. تتحقق جهات إصدار الشهادات العامة من قائمة SAN، لذا أدرج الاسم الشائع هنا أيضًا.

استبدل yourdomain.com بنطاقك الفعلي في كل مكان. لتغطية أسماء مضيفين إضافية، أضفها إلى قائمة SAN مفصولة بفواصل، على سبيل المثال DNS:api.yourdomain.com. للحصول على شهادة wildcard، أدرج كلًا من النطاق الشامل (wildcard) والنطاق العادي: DNS:*.yourdomain.com,DNS:yourdomain.com. استخدم فقط أحرفًا وأرقامًا في حقول الموضوع، واستخدم رمز الدولة الرسمي المكون من حرفين لحقل C.

إذا كنت تفضّل مفتاح ECDSA (أصغر وأسرع، مع دعم واسع لـ P-256)، قم بإنشاء المفتاح وCSR بهذه الطريقة بدلًا من ذلك:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

يدعم lighttpd كلًا من شهادات RSA وECDSA من خلال mod_openssl، ويمكنك تقديم كليهما على نفس المقبس (socket) عن طريق سرد زوجين من توجيهات ssl.pemfile وssl.privkey.

إذا كنت تفضّل الإجابة على المطالبات حقلًا واحدًا في كل مرة، قم بتشغيل openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr بدون -subj وبدون -addext. سيطلب OpenSSL كل حقل بالتتابع. عند القيام بذلك:

  • اسم الدولة (C): رمز ISO المكون من حرفين لدولتك، على سبيل المثال US أو GB. بالنسبة لشهادات التحقق من الأعمال (Business Validation) أو التحقق الممتد (Extended Validation)، يجب أن يكون هذا هو بلد التسجيل الرسمي لمؤسستك.
  • اسم الولاية أو المقاطعة (ST): الاسم الكامل، على سبيل المثال Tennessee. لا تختصر.
  • اسم المنطقة (L): المدينة أو البلدة، على سبيل المثال Nashville.
  • اسم المؤسسة (O): الاسم المسجّل الرسمي لشركتك، على سبيل المثال Your Company LLC. بالنسبة لشهادات التحقق من النطاق (Domain Validation) يمكنك إدخال NA.
  • اسم الوحدة التنظيمية (OU): هذا الحقل قديم ومهمل ويتم تجاهله من قِبل جهات إصدار الشهادات العامة. اتركه فارغًا بالضغط على Enter.
  • الاسم الشائع (CN): اسم النطاق المؤهل بالكامل (Fully Qualified Domain Name) الذي تُصدر له الشهادة، على سبيل المثال www.yourdomain.com. بالنسبة للنطاق الشامل (wildcard)، استخدم *.yourdomain.com.
  • عنوان البريد الإلكتروني: اختياري ولا تستخدمه جهات إصدار الشهادات العامة. يمكنك تركه فارغًا.
  • كلمة مرور التحدي واسم شركة اختياري: كلاهما سمتان قديمتان يتم تجاهلهما من قِبل جهات إصدار الشهادات العامة. اتركهما فارغتين.

بدون علامة -addext، لن يحتوي CSR الناتج على أي إدخالات SAN. تتحقق جهات إصدار الشهادات العامة من قائمة SAN وسترفض (أو تتجاوز بصمت) طلبًا بدونها، لذا فإن المسار الموصى به هو الأمر المضمّن -subj بالإضافة إلى -addext الموضح أعلاه.

الخطوة 3: تحديد موقع ملفاتك

اسرد الدليل الحالي للتأكد من إنشاء كلا الملفين:

ls

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

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

قيّد المفتاح الخاص بحيث يمكن لمالك الملف فقط قراءته:

chmod 600 yourdomain.key

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

قبل تقديمه، تحقق من أن CSR يحتوي على الموضوع وSANs الصحيحة وأن توقيعه صالح. يقوم هذا بفك ترميز الطلب محليًا باستخدام OpenSSL:

openssl req -noout -text -verify -in yourdomain.csr

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

الخطوة 5: تقديم CSR الخاص بك

لنسخ CSR الخاص بطلبك، اطبع محتوياته:

cat yourdomain.csr

سترى كتلة نص مثل هذه:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

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

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

بعد أن تتحقق جهة إصدار الشهادات من الطلب، ستتلقى شهادتك. اعتمادًا على مستوى التحقق، يستغرق هذا بضع دقائق للتحقق من النطاق (Domain Validation)، أو حتى عدة أيام عمل للتحقق من الأعمال (Business Validation) والتحقق الممتد (Extended Validation).

الخطوة 6: تثبيت الشهادة على lighttpd

عند وصول الشهادة، ضع الشهادة الصادرة وسلسلتها الوسيطة على الخادم بجانب المفتاح الخاص، ثم وجّه lighttpd إليها في كتلة مقبس TLS الخاصة بك. في إصدارات lighttpd الحالية، يعيش دعم TLS في mod_openssl، والتنسيق الموصى به (منذ أن قدّم lighttpd 1.4.53 خيار ssl.privkey) يحتفظ بالشهادة بالإضافة إلى السلسلة في ملف واحد والمفتاح الخاص في ملف منفصل:

server.modules += ( "mod_openssl" )

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}

يجب أن يحتوي ملف ssl.pemfile على شهادتك متبوعة بالشهادات الوسيطة (قم ببنائه باستخدام cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). لا يزال التنسيق القديم أحادي الملف الذي يجمع الشهادة والمفتاح الخاص في ملف ssl.pemfile واحد يعمل على الإصدارات الأقدم، لكن شكل الملف المنفصل يطابق الطريقة التي تسلّم بها جهات إصدار الشهادات الملفات وهو التوصية الموثقة. اختبر التكوين باستخدام sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf وأعد تشغيل lighttpd لتطبيق التغيير. للحصول على سير العمل الكامل، راجع دليلنا حول كيفية تثبيت شهادة SSL على lighttpd.

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

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

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

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