يوضح لك هذا الدليل كيفية إنشاء CSR على NGINX. لا يقوم NGINX بإنشاء طلبات توقيع الشهادات بنفسه: فأنت تقوم بإنشاء المفتاح الخاص وملف CSR باستخدام OpenSSL على نفس الخادم الذي سيستضيف الشهادة، ثم ترسل ملف CSR إلى جهة إصدار الشهادات (CA) الخاصة بك. عندما تعود الشهادة الصادرة، توجه NGINX إليها باستخدام التوجيهين ssl_certificate وssl_certificate_key.
تعمل الخطوات أدناه على كل توزيعة لينكس مدعومة تحتوي على NGINX (Debian و Ubuntu و RHEL و AlmaLinux و Rocky Linux و Amazon Linux)، حيث تأتي كل منها مزودة بإصدار OpenSSL 1.1.1 أو 3.x. يقوم إصدار OpenSSL الحديث بتوقيع الطلبات باستخدام SHA-256 بشكل تلقائي، لذا لن تحتاج إلى إضافة علم (flag) خاص بالخوارزمية.
الخطوة 1: الاتصال بخادم NGINX الخاص بك
اتصل بالخادم الذي يعمل عليه NGINX عبر SSH من جهازك المحلي (Terminal في macOS أو Linux، أو PowerShell أو Windows Terminal في Windows). استبدل اسم المستخدم والمضيف بالبيانات الخاصة بك:
ssh your-user@your-nginx-server
قم بإنشاء ملف CSR على الخادم الذي سيقوم بتقديم الشهادة. يتم إنشاء المفتاح الخاص إلى جانب ملف CSR ويجب أن يبقى على ذلك الخادم. تشغيل هذه الأوامر محلياً ثم نسخ المفتاح إلى مكان آخر يُفقد الغاية الأساسية من وجود مفتاح خاص من الأساس.
الخطوة 2: إنشاء المفتاح الخاص وملف CSR
قم بتشغيل الأمر التالي. فهو ينشئ مفتاحاً خاصاً من نوع 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 يترك المفتاح الخاص غير مشفر بحيث يمكن لـ NGINX قراءته عند بدء التشغيل دون طلب عبارة مرور. إذا كنت تفضل تشفير المفتاح، أزل -nodes واستخدم توجيه ssl_password_file في NGINX لتوفير عبارة المرور عند بدء التشغيل وإعادة التحميل.
- -keyout و-out يحددان اسمي ملفي المفتاح الخاص وملف CSR.
- -subj يوفر موضوع الشهادة. ضع اسم شركتك وولايتك ومدينتك الحقيقية هنا، بدلاً من القيم النموذجية. CN (الاسم الشائع) هو نطاقك الأساسي.
- -addext “subjectAltName=…” يسرد كل اسم مضيف يجب أن تشمله الشهادة. تتحقق جهات إصدار الشهادات العامة من قائمة SAN، لذا احرص على تضمين الاسم الشائع هنا أيضاً. يتطلب علم -addext إصدار OpenSSL 1.1.1 أو أحدث؛ وكل توزيعة لينكس مدعومة تأتي مزودة بهذا الإصدار على الأقل.
استبدل yourdomain.com بنطاقك الفعلي في كل مكان. لتغطية أسماء مضيف إضافية، أضفها إلى قائمة SAN مفصولة بفواصل، على سبيل المثال DNS:api.yourdomain.com. بالنسبة للشهادة الشاملة (wildcard)، قم بتضمين النطاق الشامل والنطاق العادي معاً: DNS:*.yourdomain.com,DNS:yourdomain.com.
إذا كنت تفضل مفتاح 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 الخاص بك لا يدعم -addext
في الأنظمة القديمة جداً التي تحتوي على إصدار OpenSSL أقدم من 1.1.1، لا يكون علم -addext متوفراً. أنشئ ملف تهيئة صغيراً باسم san.cnf بهذا المحتوى:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[ dn ]
C = US
ST = YourState
L = YourCity
O = YourCompany
CN = yourdomain.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = yourdomain.com
DNS.2 = www.yourdomain.com
ثم قم بتشغيل:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key -out yourdomain.csr -config san.cnf
الخطوة 3: تحديد موقع ملفاتك
اعرض محتوى المجلد الحالي للتأكد من إنشاء كل الملفين:
ls
يجب أن ترى ملفين جديدين:
- yourdomain.key: مفتاحك الخاص. احتفظ به على الخادم، وقم بنسخه احتياطياً بشكل آمن، ولا ترسله إلى أي شخص أبداً، بما في ذلك جهة إصدار الشهادات. فمن يملك المفتاح يمكنه انتحال هوية موقعك.
- yourdomain.csr: طلب توقيع الشهادة الخاص بك. هذا هو الملف الذي ترسله إلى مزود خدمة SSL.
عيّن أذونات صارمة على المفتاح الخاص فوراً بحيث يستطيع فقط المستخدم الجذر (root) قراءته:
sudo chmod 600 yourdomain.key
sudo chown root:root yourdomain.key
الخطوة 4: التحقق من ملف CSR (اختياري ولكنه موصى به)
قبل إرسال الملف، تحقق من أن ملف CSR يحتوي على الموضوع الصحيح وقوائم SAN الصحيحة، وأن توقيعه صالح. يقوم هذا الأمر بفك تشفير الطلب محلياً باستخدام 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-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----
انسخ الكتلة كاملة، بما في ذلك سطري —–BEGIN CERTIFICATE REQUEST—– و—–END CERTIFICATE REQUEST—– (يحتوي كل مؤشر على خمس علامات شرطة على كل جانب). هذه الكتلة بأكملها هي ملف CSR الخاص بك. الصقها في نموذج الطلب أثناء عملية الشراء، واحتفظ بالمفتاح الخاص المطابق في مكانه على الخادم.
إذا كنت تفضل عدم استخدام سطر الأوامر، يمكنك أيضاً إنشاء الطلب باستخدام مُنشئ CSR الخاص بنا عبر الإنترنت. لاحظ أنه يقوم بإنشاء المفتاح الخاص في متصفحك، لذا احفظ هذا المفتاح بنفسك وانقله إلى الخادم.
ما يحدث بعد إصدار جهة إصدار الشهادات للشهادة
بعد أن تتحقق جهة إصدار الشهادات (CA) من صحة ملف CSR وتصدر الشهادة، ستحصل عادة على شهادة الخادم الخاصة بك (ملف بامتداد .crt يحمل اسم نطاقك) بالإضافة إلى شهادة وسيطة واحدة أو أكثر، والتي تُجمع في بعض الأحيان في ملف .ca-bundle. يتوقع NGINX أن تكون شهادة الخادم وسلسلة الشهادات الوسيطة مجمّعة معاً في ملف واحد (“السلسلة الكاملة” أو fullchain)، ويشير إليه توجيه ssl_certificate؛ أما المفتاح الخاص الذي أنشأته أعلاه، فيشير إليه بشكل مستقل توجيه ssl_certificate_key. يمكنك متابعة الإجراء الكامل (بناء السلسلة الكاملة، وتحرير كتلة الخادم، والاختبار، وإعادة التحميل) في دليل تثبيت شهادة SSL على NGINX الخاص بنا.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


