يوضح لك هذا الدليل كيفية إنشاء CSR (طلب توقيع الشهادة) على JBoss EAP وWildFly باستخدام أداة Java keytool. تتكون العملية من أمرين: أولًا ينشئ keytool -genkeypair مخزن مفاتيح (keystore) ومفتاحًا خاصًا تحت اسم مستعار (alias) تختاره، ثم يقوم keytool -certreq بتصدير CSR المطابق مع أسماء Subject Alternative Names التي ستصدرها CA. يُعاد استخدام نفس الاسم المستعار لاحقًا عند استيراد الشهادة الموقّعة، لذا يبقى المفتاح وCSR والشهادة النهائية في مكان واحد.
ملاحظة حول الإصدارات: JBoss الحديث هو Red Hat JBoss Enterprise Application Platform (EAP) 8، الذي صدر في فبراير 2024 ويستند إلى مشروع WildFly الأساسي (WildFly 41، الذي صدر في يوليو 2026، هو الإصدار المجتمعي الحالي). كلاهما يوصلان HTTPS عبر النظام الفرعي elytron ومستمع Undertow https-listener؛ ولم يعد تكوين موصل Tomcat أو Jetty القديم الموضح في الأدلة القديمة ساري المفعول. أما خطوة CSR نفسها، فهي متطابقة عبر جميع الإصدارات الحديثة لأنها عملية بسيطة تعتمد على أداة Java keytool.
ما الذي ستحتاجه
- تثبيت Java (JDK أو JRE) حتى يكون أمر keytool متاحًا. يعمل JBoss EAP 8.0 على Java 11 (مهجور) أو 17، ويضيف EAP 8.1 دعم Java 21، بينما يعمل WildFly 41 على Java 17 أو 21 أو 25 (لم يعد Java 11 مدعومًا رسميًا). تأكد من ذلك باستخدام
keytool -help. - إمكانية الوصول إلى الطرفية (shell) على خادم JBoss الذي سيستضيف المفتاح الخاص. يجب أن يبقى المفتاح الخاص على هذا الخادم.
- اسم النطاق المؤهل بالكامل (FQDN) الذي تريد تأمينه، على سبيل المثال www.yourdomain.com، بالإضافة إلى أي أسماء مضيف إضافية تريد تغطيتها في حقل SAN.
- التفاصيل القانونية لمؤسستك (الدولة، الولاية، المدينة، اسم المؤسسة) لإدراجها في الاسم المميز (Distinguished Name) لطلب CSR.
الخطوة 1: إنشاء مخزن المفاتيح والمفتاح الخاص
إذا كنت قد أنشأت CSR بالفعل، فانتقل مباشرةً إلى إرسال CSR ثم إلى تثبيت شهادة SSL على JBoss.
افتح طرفية على خادم JBoss وأنشئ مخزن مفاتيح جديدًا بتنسيق PKCS12. يُعد PKCS12 المعيار الحديث والقابل للنقل (RFC 7292)، وهو تنسيق مخزن المفاتيح الافتراضي في Java منذ JDK 9؛ أما التنسيق الخاص الأقدم JKS فهو مهجور. نفّذ الأمر التالي:
keytool -genkeypair
-alias jboss
-keyalg RSA -keysize 2048
-storetype PKCS12
-keystore yourdomain.p12
-validity 825
معنى الخيارات:
- -alias jboss: اسم الإدخال داخل مخزن المفاتيح. اختر تسمية يسهل عليك تذكرها (غالبًا jboss أو server أو نطاقك). دوّنها جانبًا. يجب استخدام نفس هذا الاسم المستعار بالضبط عند إنشاء CSR ومرة أخرى عند استيراد الشهادة الموقّعة. استخدام اسم مستعار مختلف عند الاستيراد هو الخطأ الأكثر شيوعًا مع keytool.
- -keyalg RSA -keysize 2048: يُعد مفتاح RSA بحجم 2048 بت الحد الأدنى العام الحالي. بالنسبة لمخازن المفاتيح الجديدة التي تنوي الاحتفاظ بها لعدة سنوات، فإن 3072 بت ترقية معقولة. تقبل معظم CAs العامة أيضًا ECDSA (-keyalg EC -groupname secp256r1) إذا كنت تفضل مفتاحًا أصغر وأسرع. يتطلب الخيار -groupname إصدار JDK 13 أو أحدث؛ وفي Java 11 استخدم بدلًا منه -keyalg EC -keysize 256، والذي يختار نفس المنحنى secp256r1. يرفض keytool استخدام كلا الخيارين في نفس الأمر.
- -storetype PKCS12: يفرض استخدام مخزن المفاتيح الحديث PKCS12. الامتداد المطابق هو .p12 (أو .pfx).
- -keystore yourdomain.p12: ملف مخزن المفاتيح المراد إنشاؤه. استبدل الاسم بما يناسبك، واحتفظ بهذا الملف في مكان آمن؛ فهو يحتوي على مفتاحك الخاص.
- -validity 825: المدة التي تكون فيها الشهادة الموقّعة ذاتيًا (وهي شهادة مؤقتة) داخل مخزن المفاتيح صالحة. تحل الشهادة الموقّعة من CA محلها لاحقًا، لذا لا تؤثر هذه القيمة على مدة الصلاحية الفعلية في بيئة الإنتاج.
سيطلب منك keytool بعد ذلك كلمة مرور مخزن المفاتيح. اختر كلمة مرور قوية واحفظها في مدير كلمات المرور الخاص بك: ستحتاجها في كل أمر keytool لاحق، وكذلك في مرجع بيانات الاعتماد Elytron credential-reference الذي ستقوم بتكوينه في JBoss. في مخازن مفاتيح PKCS12، تتساوى كلمة مرور المفتاح مع كلمة مرور مخزن المفاتيح، لذا لا توجد سوى كلمة مرور واحدة يجب تذكرها.
الخطوة 2: إدخال تفاصيل مؤسستك (DN)
يطلب منك keytool الآن الاسم المميز (Distinguished Name – DN): حقول الهوية التي تُدرج في CSR. أجب عن كل مطالبة بالقيمة الدقيقة والقانونية لمؤسستك. تُعد علامات الترقيم والدقة مهمتين، لأن CA سترفض أي عدم تطابق مع السجلات التجارية العامة.
- الاسم الأول والأخير (CN): هذه صياغة keytool، لكنه في الواقع حقل Common Name. أدخل اسم النطاق المؤهل بالكامل (FQDN) الدقيق الذي تؤمنه، على سبيل المثال www.yourdomain.com، أو حرف بدل مثل *.yourdomain.com. لا تُدخل اسم شخص.
- الوحدة التنظيمية (OU): لم تعد CAs العامة تصدر هذا الحقل، ومن الأفضل تركه فارغًا. لاحظ أن الضغط على Enter لا يترك الحقل فارغًا فعليًا: يستبدله keytool بقيمة افتراضية خاصة به، فينتهي الأمر بأن يحمل DN القيمة OU=Unknown، والتي تنتقل بعد ذلك إلى CSR. لحذف الحقل فعليًا، استخدم صيغة -dname غير التفاعلية أدناه واترك OU خارج السلسلة النصية.
- المؤسسة (O): الاسم القانوني الكامل لشركتك، على سبيل المثال Your Company LLC. تتطلب شهادات OV وEV هذا الحقل؛ أما بالنسبة لشهادات DV فإن العديد من CAs تقبله كمعلومة إضافية، لذا فإن ملء هذا الحقل أكثر أمانًا من تركه فارغًا.
- المدينة أو الموقع (L): اسم المدينة الكامل، على سبيل المثال San Jose. لا تختصره.
- الولاية أو المقاطعة (ST): الاسم الكامل للولاية أو المقاطعة، على سبيل المثال California. لا تستخدم رمزًا مكونًا من حرفين.
- رمز الدولة (C): رمز الدولة المكون من حرفين وفق معيار ISO، على سبيل المثال US أو GB أو DE.
بعد آخر مطالبة، يعرض keytool ملخصًا مثل CN=www.yourdomain.com, OU=Unknown, O=Your Company LLC, L=San Jose, ST=California, C=US. اكتب yes للتأكيد. يوجد الآن ملف مخزن المفاتيح مع إدخال واحد: اسمك المستعار، الذي يحمل المفتاح الخاص وشهادة موقّعة ذاتيًا مؤقتة.
إذا كنت تفضل أمرًا غير تفاعلي، مرّر DN مباشرة وتجاوز المطالبات:
keytool -genkeypair
-alias jboss
-keyalg RSA -keysize 2048
-storetype PKCS12
-keystore yourdomain.p12
-dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US"
-validity 825
الخطوة 3: إنشاء CSR مع SAN
تتحقق المتصفحات الحديثة وعملاء TLS من الشهادات مقابل امتداد Subject Alternative Name (SAN)، وليس الاسم الشائع (Common Name) فقط. اطلب SANs مباشرة في CSR حتى تُدرجها CA في الشهادة الصادرة. استخدم نفس الاسم المستعار ومخزن المفاتيح من الخطوة 1:
keytool -certreq
-alias jboss
-keystore yourdomain.p12
-file yourdomain.csr
-ext san=dns:yourdomain.com,dns:www.yourdomain.com
معنى الخيارات:
- -alias jboss: يجب أن يطابق الاسم المستعار من الخطوة 1. هذا هو الاسم المستعار الذي يوقّع مفتاحه الخاص الطلب.
- -keystore yourdomain.p12: يجب أن يطابق مخزن المفاتيح من الخطوة 1.
- -file yourdomain.csr: اسم ملف الإخراج الخاص بـ CSR.
- -ext san=dns:…: امتداد Subject Alternative Name. أدرج كل اسم مضيف يجب أن تغطيه الشهادة، بما في ذلك النطاق الأساسي (yourdomain.com) والنطاق الفرعي www. أضف مزيدًا من الإدخالات مفصولة بفواصل، على سبيل المثال dns:api.yourdomain.com.
سيطلب منك keytool كلمة مرور مخزن المفاتيح، ثم يكتب CSR في ملف yourdomain.csr في الدليل الحالي.
مهم جدًا: احتفظ باسمك المستعار ومخزن مفاتيحك
الخطأ الأكثر شيوعًا في استخدام keytool مع JBoss هو استيراد الشهادة الموقّعة تحت اسم مستعار جديد. يؤدي القيام بذلك إلى تخزين الشهادة كإدخال موثوق مستقل بدون مفتاح خاص مرتبط بها، وسيفشل مدير مفاتيح Elytron في بدء جلسة TLS. استورد دائمًا الرد الموقّع مرة أخرى إلى نفس الاسم المستعار الذي يحمل المفتاح الخاص (الاسم المستعار من الخطوة 1).
دوّن هذه القيم الثلاث الآن، قبل إغلاق الطرفية:
- الاسم المستعار (في هذا الدليل، jboss).
- مسار ملف مخزن المفاتيح (على سبيل المثال yourdomain.p12؛ وعادة ما يوجد على JBoss في $JBOSS_HOME/standalone/configuration/).
- كلمة مرور مخزن المفاتيح.
إذا لم تكن متأكدًا من الاسم المستعار الذي يحمل مفتاحك، اعرض محتويات مخزن المفاتيح وابحث عن الإدخال الذي نوعه PrivateKeyEntry:
keytool -list -v -keystore yourdomain.p12
الخطوة 4: التحقق من CSR قبل إرساله
اكتشف الأخطاء المطبعية في DN أو أي SANs مفقودة قبل أن تتحقق منها CA. اطبع CSR باستخدام keytool:
keytool -printcertreq -file yourdomain.csr
أو إذا كان OpenSSL مثبتًا، يمكنك استخدامه بدلًا من ذلك:
openssl req -noout -text -in yourdomain.csr
تأكد من ثلاثة أمور في الإخراج: أن Subject يعرض DN الدقيق الخاص بك، وأن Subject Alternative Name يسرد كل اسم مضيف تحتاجه، وأن حجم Public-Key يطابق ما طلبته (RSA بحجم 2048 بت، أو أي حجم اخترته). يمكنك أيضًا لصق CSR في أداة فك تشفير CSR الخاصة بنا لإجراء نفس الفحص في المتصفح.
الخطوة 5: إرسال CSR إلى جهة إصدار الشهادات
افتح yourdomain.csr في أي محرر نصوص. الملف نص عادي، يبدأ بـ -----BEGIN NEW CERTIFICATE REQUEST----- وينتهي بـ -----END NEW CERTIFICATE REQUEST-----. كلمة NEW هي ما يكتبه keytool، وهذا أمر متوقع: فالمحتوى هو طلب PKCS#10 قياسي تقبله كل CA. انسخ الكتلة بأكملها، بما في ذلك سطري الرأس والتذييل، والصقها في حقل CSR أثناء إتمام الشراء لدى CA الخاصة بك. على Windows، استخدم Ctrl + A ثم Ctrl + C للحصول على النص الكامل؛ وعلى macOS، استخدم Cmd + A ثم Cmd + C.
انسخ ملف مخزن المفاتيح احتياطيًا قبل القيام بأي شيء آخر. إذا فقدت yourdomain.p12، فستفقد أيضًا المفتاح الخاص، مما يعني أن الشهادة الموقّعة التي ترجعها CA ستكون غير قابلة للاستخدام وستضطر إلى البدء من جديد بإنشاء CSR جديد.
بعد أن تتحقق CA من طلبك وتصدر الشهادة، تابع مع كيفية تثبيت شهادة SSL على JBoss. ستستورد الشهادة الموقّعة مرة أخرى إلى نفس الاسم المستعار في نفس مخزن المفاتيح، ثم تشير إلى مخزن المفاتيح هذا من key-store وkey-manager وserver-ssl-context الخاصة بـ Elytron والمُوصَّلة بمستمع Undertow https-listener.
هل يمكنني إعادة استخدام CSR للتجديد؟
يمكنك ذلك، لكن أفضل ممارسة أمنية هي إنشاء مخزن مفاتيح جديد، ومفتاح خاص جديد، وCSR جديد لكل شهادة. فمفتاح جديد لكل عملية تجديد يحد من التأثير في حال تعرض المفتاح القديم للاختراق، والعملية هي نفسها: نفّذ keytool -genkeypair ثم keytool -certreq مقابل ملف مخزن مفاتيح جديد. تتقلص مدد صلاحية شهادات TLS العامة بموجب قواعد CA/Browser Forum (200 يومًا اعتبارًا من 15 مارس 2026، تنخفض إلى 100 يوم في 2027 و47 يومًا في 2029)، لذا خطط لدورات CSR أكثر تكرارًا، أو أتمتة عملية الإصدار عبر ACME إذا كانت CA الخاصة بك تدعم ذلك.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


