bg-tutorials

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

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

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

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

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

ssh your-user@your-apache-server

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

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

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

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

نفّذ أمر 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 يترك المفتاح الخاص بدون تشفير حتى يتمكن Apache من قراءته عند بدء التشغيل دون طلب عبارة مرور (passphrase).
  • -keyout و-out يحددان أسماء ملف المفتاح الخاص وملف CSR.
  • -subj يوفّر موضوع الشهادة. أدخل هنا اسم شركتك ومحافظتك ومدينتك الحقيقية بدلًا من العناصر النائبة. CN (الاسم الشائع – Common Name) هو نطاقك الأساسي.
  • -addext “subjectAltName=…” يسرد كل اسم مضيف (hostname) يجب أن تغطيه الشهادة. تتحقق المراجع المصدقة العامة من قائمة 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"

إذا كنت تفضّل الإجابة على الطلبات حقلًا بحقل، نفّذ 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): الاسم الكامل، على سبيل المثال California. لا تستخدم اختصارات.
  • اسم المنطقة المحلية (L): المدينة أو البلدة، على سبيل المثال San Francisco.
  • اسم المؤسسة (O): الاسم المسجل الرسمي لشركتك، على سبيل المثال GPI Holding LLC. بالنسبة لشهادات التحقق من النطاق (Domain Validation) يمكنك إدخال NA.
  • اسم الوحدة التنظيمية (OU): هذا الحقل قديم (deprecated) وتتجاهله المراجع المصدقة العامة. اتركه فارغًا بالضغط على Enter.
  • الاسم الشائع (CN): اسم النطاق المؤهل بالكامل (FQDN) الذي تخص الشهادة، على سبيل المثال www.yourdomain.com. بالنسبة لـ wildcard، استخدم *.yourdomain.com.
  • عنوان البريد الإلكتروني: اختياري ولا تستخدمه المراجع المصدقة العامة. يمكنك تركه فارغًا.
  • كلمة مرور التحدي (challenge password) واسم شركة اختياري: كلاهما سمتان قديمتان تتجاهلهما المراجع المصدقة العامة. اتركهما فارغتين.

بدون علامة -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 Generator على الإنترنت. لاحظ أنها تُنشئ المفتاح الخاص في متصفحك، فاحفظ ذلك المفتاح بنفسك وانقله إلى الخادم.

بعد أن يتحقق مرجعك المصدق من الطلب، ستستلم شهادتك. يستغرق ذلك، حسب مستوى التحقق، بضع دقائق للتحقق من النطاق، أو حتى عدة أيام عمل للتحقق من الأعمال والتحقق الموسّع.

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

عندما تصل الشهادة، ضع الشهادة المُصدرة (بما في ذلك أي شهادات وسيطة مدمجة في ملف fullchain واحد) والمفتاح الخاص على الخادم، ثم وجّه Apache إليهما في المضيف الافتراضي (virtual host) لموقعك:

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

تقرأ إصدارات Apache الحديثة (2.4.8 وما بعدها) الشهادة الطرفية وأي شهادات وسيطة من ملف واحد يُمرَّر إلى SSLCertificateFile، لذا اجمع شهادتك وحزمة المرجع المصدق في ملف واحد. أما التوجيه القديم SSLCertificateChainFile فهو قديم (deprecated) ولا ينبغي استخدامه على إصدارات Apache الحالية. اختبر التهيئة باستخدام apachectl configtest وأعد تحميل Apache لتطبيق التغيير. للحصول على سير العمل الكامل، راجع دليلنا حول كيفية تثبيت شهادة SSL على Apache.

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

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

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

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