bg-tutorials

كيفية تثبيت شهادة SSL على خادم JBoss

يوضح لك هذا الدرس كيفية تثبيت شهادة SSL على JBoss EAP وWildFly باستخدام keytool ونظام أمان Elytron. إذا لم تكن ملفات شهادتك جاهزة بعد، يغطي القسم الأول عملية إنشاء CSR.

ملاحظة حول الإصدارات: تعتمد إصدارات JBoss EAP الحديثة (7.1 وما بعدها، بما في ذلك EAP 8) وإصدارات WildFly الأخيرة على نظام elytron لتهيئة HTTPS، المرتبط بـ https-listener في Undertow. أما الطريقة القديمة security-realm ووصلات Tomcat أو Jetty القديمة فهي مهجورة الآن، لذا يعتمد هذا الدليل على الطريقة الحديثة.

سجّلنا أيضًا فيديو يشرح لك العملية كاملة. يمكنك مشاهدة الفيديو أو قراءة التعليمات أو كلاهما. يمكنك مشاهدة الفيديو أدناه.

إنشاء رمز CSR على JBoss

CSR (طلب توقيع الشهادة) هو مجموعة من النصوص المشفرة التي ترسلها إلى هيئة إصدار الشهادات (CA) عند طلب شهادة. يحمل هذا الطلب تفاصيل نطاقك ومؤسستك، والتي تستخدمها هيئة إصدار الشهادات للتحقق من الطلب. يؤدي إنشاء CSR أيضًا إلى إنشاء المفتاح الخاص المطابق، الذي يبقى على خادمك ويكون مطلوبًا خلال عملية التثبيت.

أمامك خياران:

على JBoss، يتم إنشاء CSR باستخدام keytool من مخزن مفاتيح بصيغة .jks أو .p12. تذكّر الاسم المستعار (alias) واسم مخزن المفاتيح الذي تختاره الآن: ستحتاج إلى استيراد الشهادة الموقعة إلى هذا الاسم المستعار نفسه فيما بعد. أرسل CSR إلى هيئة إصدار الشهادات أثناء الطلب، وبعد إصدار الشهادة، تابع عملية التثبيت أدناه.

تثبيت شهادة SSL على خادم JBoss

الخطوة 1: تجهيز ملفات الشهادة

بعد التحقق، ترسل هيئة إصدار الشهادات ملفات الشهادة عبر البريد الإلكتروني، عادة في أرشيف ZIP. استخرج الملفات، ويجب أن تحصل على:

  • الشهادة الأساسية (ملف بصيغة .crt أو .cer أو .pem).
  • الشهادات الوسيطة، وتُسلَّم غالبًا كملف .ca-bundle (حزمة CA). قد تشمل بعض هيئات إصدار الشهادات الشهادة الجذر أيضًا.
  • مخزن المفاتيح (.jks أو .p12) الذي أنشأته مع CSR، والذي يحتوي على مفتاحك الخاص تحت الاسم المستعار الذي اخترته عند إنشاء CSR.

احتفظ بهذه الملفات معًا، وانقلها إلى الخادم، على سبيل المثال إلى دليل تهيئة JBoss ($JBOSS_HOME/standalone/configuration/). إذا فتحت أحد الملفات كنص، يمكنك التأكد من احتوائه على سطري BEGIN CERTIFICATE وEND CERTIFICATE المتوقعين.

الخطوة 2: استيراد سلسلة CA إلى مخزن المفاتيح

استورد الشهادات الوسيطة (والجذر، إن وُجدت) أولًا حتى يتمكن keytool من بناء سلسلة ثقة كاملة. استخدم مخزن المفاتيح نفسه الذي يحتوي على مفتاحك الخاص، وأعطِ كل شهادة CA اسمًا مستعارًا خاصًا بها:

keytool -import -trustcacerts -alias root -file root.crt -keystore your_keystore.jks

keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore your_keystore.jks

إذا زوّدتك هيئة إصدار الشهادات بملف .ca-bundle واحد، استورده تحت اسم مستعار واحد (مثلًا -alias intermediate). عند الطلب، أدخل كلمة مرور مخزن المفاتيح وأكّد الثقة. هذه المدخلات هي شهادات موثوقة، ليست إدخالات مفاتيح، فهي لا تؤثر على مفتاحك الخاص.

الخطوة 3: استيراد الشهادة الموقعة إلى الاسم المستعار للمفتاح

الآن استورد شهادتك الموقعة (الرد الوارد من هيئة إصدار الشهادات) إلى الاسم المستعار نفسه الذي استخدمته عند إنشاء CSR. وبما أن هذا الاسم المستعار يحتوي فعليًا على المفتاح الخاص، فإن keytool يتعامل مع هذا الاستيراد كرد شهادة، ويستبدل الشهادة الذاتية التوقيع المؤقتة بسلسلة الشهادات الموقعة من CA، محافظًا على المفتاح سليمًا:

keytool -import -trustcacerts -alias your_csr_alias -file your_domain.crt -keystore your_keystore.jks

استبدل your_csr_alias بالاسم المستعار الذي استخدمته عند إنشاء CSR، وyour_keystore.jks بمخزن مفاتيحك. عند النجاح، يطبع keytool رسالة Certificate reply was installed in keystore.

مهم: لا تنشئ اسمًا مستعارًا جديدًا هنا. فاستيراد الرد تحت اسم مستعار جديد يؤدي إلى إنشاء إدخال شهادة موثوقة بدون مفتاح خاص، فتُفقد السلسلة، ولا يتمكن الخادم من إتمام مصافحة TLS. إذا ظهرت رسالة Failed to establish chain from reply، فهذا يعني أن الشهادة الوسيطة أو الجذر من الخطوة 2 غير موجودة في مخزن المفاتيح.

يمكنك التحقق من النتيجة؛ يجب أن يُظهر الاسم المستعار الآن سلسلة شهادات بطول أكبر من 1:

keytool -list -v -alias your_csr_alias -keystore your_keystore.jks

الخطوة 4: تهيئة HTTPS في نظام Elytron

ضع مخزن المفاتيح في $JBOSS_HOME/standalone/configuration/، ثم عرّف key-store وkey-manager وserver-ssl-context ضمن Elytron. أسرع طريقة هي استخدام واجهة الإدارة CLI. شغّل الخادم، واتصل بواسطة jboss-cli.sh --connect، ثم نفّذ دفعة أوامر (batch) لتطبيق التغييرات معًا:

batch

/subsystem=elytron/key-store=httpsKS:add(path=your_keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=your_keystore_password}, type=JKS)

/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS, credential-reference={clear-text=your_keystore_password})

/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM, protocols=["TLSv1.3","TLSv1.2"])

run-batch

بعد ذلك، وجّه https-listener في Undertow إلى ssl-context الجديد. لا يمكن لـ Undertow الرجوع إلى security-realm القديم وssl-context في Elytron في الوقت نفسه، فقم بإزالة المرجع القديم وضبط المرجع الجديد في دفعة أوامر واحدة:

batch

/subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)

run-batch

إذا فضّلت تعديل ملف standalone.xml مباشرة (مع إيقاف الخادم)، فإن التهيئة المعادلة تبدو كما يلي ضمن نظام elytron:

<tls>
    <key-stores>
        <key-store name="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
            <implementation type="JKS"/>
            <file path="your_keystore.jks" relative-to="jboss.server.config.dir"/>
        </key-store>
    </key-stores>
    <key-managers>
        <key-manager name="httpsKM" key-store="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
        </key-manager>
    </key-managers>
    <server-ssl-contexts>
        <server-ssl-context name="httpsSSC" key-manager="httpsKM" protocols="TLSv1.3 TLSv1.2"/>
    </server-ssl-contexts>
</tls>

ومستمع الاتصال المطابق في نظام undertow يشير إلى ذلك ssl-context:

<https-listener name="https" socket-binding="https" ssl-context="httpsSSC" enable-http2="true"/>

يؤدي تحديد protocols إلى TLS 1.3 وTLS 1.2 فقط إلى تعطيل بروتوكولي TLS 1.0 و1.1 القديمين. منفذ HTTPS الافتراضي هو 8443؛ يمكنك ربطه بالمنفذ 443 عبر موزع تحميل أو إعادة توجيه منفذ إذا كنت تحتاج إلى المنفذ القياسي.

الخطوة 5: إعادة تشغيل JBoss

إذا عدّلت ملف standalone.xml يدويًا، أعد تشغيل الخادم حتى يتم تحميل التهيئة الجديدة. إذا استخدمت دفعات الأوامر CLI أعلاه، فإن التغييرات تُطبَّق فورًا، ولكن إعادة التحميل تؤكد بدء تشغيل سليم:

jboss-cli.sh --connect --command=:reload

راقب سجل الخادم بحثًا عن أخطاء SSL أو Elytron خلال بدء التشغيل. عند بدء التشغيل بنجاح، تكون شهادة SSL قد تم تثبيتها على JBoss.

اختبار تثبيت SSL

بعد التثبيت، تأكد من أن الشهادة والسلسلة يتم تقديمهما بشكل صحيح. افتح موقعك عبر HTTPS (مثلًا https://www.yourdomain.com:8443) وتحقق من رمز القفل، أو قم بإجراء فحص خارجي باستخدام أداتنا SSL Checker للحصول على تقرير كامل عن الشهادة والسلسلة ودعم البروتوكولات. يمكنك أيضًا التحقق من سطر الأوامر:

echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

يطبع هذا الأمر جهة إصدار الشهادة وتواريخ صلاحيتها التي يقدمها JBoss. إذا كانت جهة الإصدار هي هيئة إصدار الشهادات الخاصة بك (ولم تكن شهادة ذاتية التوقيع)، فهذا يعني أن الرد استُورد بشكل صحيح.

الأسئلة الشائعة

كيف أعرف إذا كانت شهادة SSL مثبتة على JBoss؟

اتصل بمنفذ HTTPS باستخدام OpenSSL واقرأ الشهادة التي يعيدها الخادم:
echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
إذا كانت الشهادة مثبتة، فإن هذا الأمر يطبع جهة الإصدار والموضوع وتواريخ الصلاحية. يمكنك أيضًا فحص مخزن المفاتيح باستخدام keytool -list -v -keystore your_keystore.jks، أو فتح موقعك في المتصفح والتحقق من رمز القفل.

أين أضع شهادة SSL في JBoss؟

تعيش الشهادة داخل مخزن مفاتيح، ويشير Elytron key-store إلى ذلك المخزن. الموقع الشائع هو دليل تهيئة الخادم، $JBOSS_HOME/standalone/configuration/، مع ضبط مسار Elytron key-store بحيث يكون relative-to jboss.server.config.dir. يمكنك تخزينه في مكان آخر ما دام مسار key-store يشير إليه.

لماذا يظهر لدى keytool رسالة “Failed to establish chain from reply”؟

لم يتمكن keytool من بناء مسار من شهادتك حتى الجذر الموثوق. استورد الشهادات الوسيطة (والجذر، إن وُجد) إلى مخزن المفاتيح نفسه أولًا، باستخدام -trustcacerts، ثم استورد الرد الموقع إلى الاسم المستعار لـ CSR. إذا استوردت الرد تحت اسم مستعار جديد بالكامل، فسيُفقد المفتاح الخاص: احذف ذلك الإدخال وأعد الاستيراد إلى الاسم المستعار الأصلي للمفتاح بدلًا من ذلك.

كيف يمكنني معرفة تاريخ انتهاء شهادة SSL في JBoss؟

شغّل الأمر keytool -list -v -keystore your_keystore.jks واقرأ سطر Valid from لاسمك المستعار، أو استخدم أمر OpenSSL أعلاه لمعرفة التواريخ التي يعرضها الخادم الفعلي. تتقلص فترات صلاحية شهادات TLS العامة بموجب قواعد CA/Browser Forum: بدءًا من 15 مارس 2026 سيكون الحد الأقصى 200 يوم، ثم ينخفض إلى 100 يوم في 2027 و47 يومًا في 2029. تابع تواريخ التجديد وجدّد قبل انتهاء الصلاحية، أو قم بأتمتة الإصدار إن كانت هيئة إصدار الشهادات الخاصة بك تدعم ذلك.

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

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

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

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