يوضح لك هذا الدليل كيفية إنشاء CSR (طلب توقيع الشهادة) لخادم GlassFish (المعروف الآن باسم Eclipse GlassFish) باستخدام أداة Java keytool.
يتميز GlassFish بأمر مفيد وغير معتاد: فالتثبيت الجديد يأتي بالفعل مزودًا بمخزن مفاتيح (keystore.p12 في Eclipse GlassFish 7.1 وما بعده، أو keystore.jks في الإصدارات الأقدم) وإدخال شهادة افتراضي تحت الاسم المستعار s1as. يمكنك إنشاء CSR مباشرة من هذا المفتاح الموجود، أو استبداله بمفتاح جديد تحت نفس الاسم المستعار. في كلتا الحالتين، يُعاد استخدام نفس الاسم المستعار عند استيراد الشهادة الموقعة، بحيث يبقى المفتاح وطلب CSR والشهادة الصادرة كلها في مكان واحد.
ما ستحتاج إليه
- تثبيت عامل لخادم GlassFish (أو Eclipse GlassFish). يوجد مخزن المفاتيح الافتراضي في مجلد config الخاص بالمجال (domain)، على سبيل المثال glassfish/domains/domain1/config/keystore.p12 في Eclipse GlassFish 7.1 وما بعده، أو keystore.jks في الإصدارات الأقدم.
- تثبيت Java بحيث يكون أمر keytool متاحًا. يأتي GlassFish مزودًا بـ JDK، لذا يكون keytool متوفرًا عادةً في المسار (path). تأكد من ذلك باستخدام
keytool -help. - إمكانية الوصول إلى الطرفية (shell أو terminal) على خادم GlassFish. يجب أن يبقى المفتاح الخاص على هذا الخادم.
- اسم النطاق المؤهل بالكامل (FQDN) الدقيق الذي تريد تأمينه، على سبيل المثال www.yourdomain.com، بالإضافة إلى أي أسماء مضيف إضافية لحقل SAN.
- التفاصيل القانونية لمؤسستك (الدولة، الولاية، المدينة، اسم المؤسسة) الخاصة بالاسم المميز (Distinguished Name) لطلب CSR.
- كلمة المرور الرئيسية (master password) الخاصة بـ GlassFish للمجال. القيمة الافتراضية من المصنع هي changeit؛ قم بتغييرها في الأنظمة الإنتاجية باستخدام
asadmin change-master-password.
طريقتان لإنشاء CSR
إذا كنت قد أنشأت CSR الخاص بك بالفعل، فتخطَّ إلى إرسال CSR ثم إلى تثبيت شهادة SSL على GlassFish.
هناك مساران شائعان لاستخدام keytool على GlassFish. اختر المسار الذي يناسب حالتك:
- الخيار أ: إنشاء CSR من مفتاح s1as الموجود (موصى به). يحتوي مجال GlassFish الجديد بالفعل على مفتاح خاص تحت الاسم المستعار s1as داخل مخزن المفاتيح الافتراضي (keystore.p12 في 7.1+، keystore.jks في الإصدارات الأقدم). المسار الأسرع والأقل مخاطرة هو ترك هذا المفتاح كما هو وتصدير CSR منه فقط. انتقل إلى الخيار أ.
- الخيار ب: استبدال مفتاح s1as الافتراضي بمفتاح جديد، ثم إنشاء CSR. استخدم هذا الخيار إذا كنت تريد حجم مفتاح واسم مميز (DN) معروفين وحديثين، أو إذا كنت تشك في أن المفتاح الافتراضي قد استُخدم أو تعرَّض للانكشاف. انتقل إلى الخيار ب.
أيًا كان الخيار الذي تختاره، يجب أن يبقى الاسم المستعار s1as (أو، إذا قمت بتغييره، يجب عليك أيضًا تحديث ملف domain.xml ليطابقه). فمستمع HTTPS في GlassFish يبحث عن الشهادة عبر الاسم المستعار، لذا فإن عدم تطابق الاسم المستعار يعني أن GlassFish لن يتمكن من العثور على المفتاح ولن يبدأ TLS.
الخيار أ: إنشاء CSR من مفتاح s1as الموجود
الخطوة 1: الانتقال إلى دليل إعدادات GlassFish
افتح الطرفية وانتقل إلى الدليل الذي يحتوي على مخزن المفاتيح الخاص بمجالك. في التثبيت الافتراضي، هذا هو مجلد config الخاص بـ domain1:
cd /opt/glassfish7/glassfish/domains/domain1/config
عدّل المسار ليطابق مكان تثبيت GlassFish لديك (تُدرج إصدارات GlassFish 4 الأقدم التثبيت تحت مجلد رئيسي باسم glassfish4/؛ بينما عادةً ما تُثبَّت إصدارات Eclipse GlassFish 6 و7 و8 تحت glassfish7/ أو glassfish8/ أو ما شابه). إذا أنشأت مجالك الخاص، استبدل domain1 باسم ذلك المجال. شغّل ls *.p12 *.jks في هذا الدليل للتأكد من اسم ملف مخزن المفاتيح: في Eclipse GlassFish 7.1 وما بعده سترى keystore.p12؛ وفي الإصدارات الأقدم سترى keystore.jks. استبدل ذلك الاسم في أي مكان تظهر فيه الأوامر أدناه keystore.jks.
الخطوة 2: التحقق من وجود إدخال s1as
اعرض محتويات مخزن المفاتيح وتحقق من أن s1as موجود وأنه من نوع PrivateKeyEntry:
keytool -list -v -keystore keystore.jks -alias s1as
أدخل كلمة مرور مخزن المفاتيح (الافتراضية من المصنع هي changeit؛ في الخادم الإنتاجي يجب أن تطابق كلمة المرور الرئيسية لمجالك). يجب أن يتضمن الناتج السطر Entry type: PrivateKeyEntry. أما إذا ظهرت لك بدلاً من ذلك رسالة Alias <s1as> does not exist، فانتقل إلى الخيار ب وأنشئ إدخالاً جديدًا.
الخطوة 3: تصدير CSR مع SAN
تتحقق المتصفحات الحديثة وعملاء TLS من الشهادات مقابل امتداد Subject Alternative Name (SAN)، وليس فقط الاسم الشائع (Common Name). اطلب أسماء SAN مباشرة ضمن CSR حتى تدرجها CA في الشهادة الصادرة:
keytool -certreq
-alias s1as
-keystore keystore.jks
-file glassfish.csr
-ext san=dns:yourdomain.com,dns:www.yourdomain.com
معنى الخيارات (flags):
- -alias s1as: الاسم المستعار الحالي لشهادة GlassFish. المفتاح الخاص تحت هذا الاسم المستعار يوقّع الطلب.
- -keystore keystore.jks: ملف مخزن المفاتيح الافتراضي لـ GlassFish. تأتي إصدارات Eclipse GlassFish 7.1 وما بعده بمخزن مفاتيح من نوع PKCS12 باسم keystore.p12؛ بينما تستخدم الإصدارات الأقدم مخزن مفاتيح JKS باسم keystore.jks. استخدم اسم الملف الموجود فعليًا في هذا الدليل. الأمر نفسه يبقى كما هو في الحالتين؛ حيث يكتشف keytool الصيغة تلقائيًا.
- -file glassfish.csr: اسم ملف الإخراج لـ CSR. اختر أي اسم تفضّله.
- -ext san=dns:…: امتداد Subject Alternative Name. أدرج كل اسم مضيف يجب أن تغطيه الشهادة، بما في ذلك النطاق الأساسي المجرد (yourdomain.com) والنطاق الفرعي www. أضف مزيدًا من الإدخالات مفصولة بفواصل، على سبيل المثال dns:api.yourdomain.com.
يطلب keytool كلمة مرور مخزن المفاتيح ويكتب CSR إلى ملف glassfish.csr في الدليل الحالي. يُؤخذ حقل الموضوع (Distinguished Name) في CSR من أي بيانات مخزّنة في إدخال s1as؛ وفي تثبيت GlassFish جديد يكون ذلك هو شهادة التوقيع الذاتي (self-signed) المُنشأة تلقائيًا، لذا لن يطابق الاسم المميز شركتك. تتحقق معظم CAs فقط من الاسم الشائع وقائمة SAN وتسمح لك بتجاوز باقي حقول الاسم المميز في نموذج الطلب، لكن إذا كنت بحاجة إلى CSR يحمل بيانات شركتك القانونية بالفعل، استخدم الخيار ب.
الخيار ب: استبدال مفتاح s1as الافتراضي بمفتاح جديد
استخدم هذا الخيار عندما تريد تحكمًا كاملاً في حجم المفتاح والاسم المميز (DN)، أو عندما تفضّل عدم إعادة استخدام المفتاح المُنشأ من المصنع. تسير العملية كالتالي: احذف إدخال s1as الافتراضي، أنشئ مفتاحًا جديدًا تحت نفس الاسم المستعار، ثم صدّر CSR. إن الإبقاء على الاسم المستعار s1as يعني أنك لن تحتاج إلى لمس ملف domain.xml بعد ذلك.
الخطوة 1: أخذ نسخة احتياطية من مخزن المفاتيح
قبل حذف أي شيء، انسخ مخزن المفاتيح الحالي حتى تتمكن من التراجع إذا لزم الأمر. من دليل config الخاص بالمجال:
cp keystore.jks keystore.jks.bak
الخطوة 2: حذف إدخال s1as الافتراضي
keytool -delete -alias s1as -keystore keystore.jks
أدخل كلمة مرور مخزن المفاتيح عند مطالبتك بذلك.
الخطوة 3: إنشاء مفتاح خاص جديد تحت نفس الاسم المستعار
أنشئ مفتاح RSA جديدًا بحجم 2048 بت تحت الاسم المستعار s1as، وقدّم الاسم المميز (DN) مباشرة داخل الأمر ليكون تنفيذه غير تفاعلي:
keytool -genkeypair
-alias s1as
-keyalg RSA -keysize 2048
-keystore keystore.jks
-dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US"
-validity 825
معنى الخيارات (flags):
- -alias s1as: يعيد استخدام الاسم المستعار الافتراضي لـ GlassFish بحيث لا يحتاج ملف domain.xml إلى أي تعديل.
- -keyalg RSA -keysize 2048: مفتاح RSA بحجم 2048 بت هو الحد الأدنى العام الحالي. للمفاتيح الجديدة التي تخطط للاحتفاظ بها لعدة سنوات، يُعد 3072 بت ترقية معقولة. كما تقبل معظم CAs العامة خوارزمية ECDSA (-keyalg EC -groupname secp256r1) للحصول على مفتاح أصغر وأسرع.
- -keystore keystore.jks: مخزن المفاتيح الافتراضي لـ GlassFish. استبدله بـ keystore.p12 في Eclipse GlassFish 7.1 وما بعده. يحافظ keytool على صيغة مخزن المفاتيح الحالية (JKS في التثبيتات الأقدم، PKCS12 في 7.1+)؛ كلاهما مناسب هنا.
- -dname “CN=…”: حقول الاسم المميز (DN) المكتوبة داخل CSR. استخدم بيانات شركتك الدقيقة والقانونية:
- CN: اسم النطاق المؤهل بالكامل (FQDN) الدقيق الذي تؤمّنه، على سبيل المثال www.yourdomain.com، أو نطاق شامل (wildcard) مثل *.yourdomain.com. لا تُدخل اسم شخص، رغم أن صياغة استفسار keytool في الوضع التفاعلي قد تُوحي بذلك.
- O: الاسم القانوني الكامل لشركتك.
- L: اسم المدينة الكامل (لا تختصره).
- ST: اسم الولاية أو المقاطعة الكامل (لا تستخدم رمزًا مكونًا من حرفين).
- C: رمز الدولة المكوّن من حرفين وفق معيار ISO، على سبيل المثال US، GB، DE.
- OU (الوحدة التنظيمية): لم تعد CAs العامة تصدر هذا الحقل. احذفه من الاسم المميز (DN).
يطلب keytool كلمة مرور مخزن المفاتيح وكلمة مرور المفتاح. في مجال GlassFish، يجب أن تتطابق كلمة مرور مخزن المفاتيح وكلمة مرور المفتاح وكلمة المرور الرئيسية للمجال جميعها، وإلا لن يتمكن GlassFish من فتح المفتاح عند بدء التشغيل وسيفشل HTTPS. اضغط Enter عند طلب كلمة مرور المفتاح لإعادة استخدام كلمة مرور مخزن المفاتيح.
الخطوة 4: تصدير CSR مع SAN
نفس الأمر المستخدم في الخيار أ، ولكن يُنفَّذ على مفتاحك الجديد:
keytool -certreq
-alias s1as
-keystore keystore.jks
-file glassfish.csr
-ext san=dns:yourdomain.com,dns:www.yourdomain.com
أدخل كلمة مرور مخزن المفاتيح. يكتب keytool ملف CSR باسم glassfish.csr في الدليل الحالي.
أمر بالغ الأهمية: أبقِ الاسم المستعار s1as
أكثر خطأ شائع في استخدام keytool على GlassFish هو تغيير الاسم المستعار في مرحلة ما من العملية، سواء عند إنشاء المفتاح أو عند استيراد الشهادة الموقعة. يظهر نمطان من الأعطال:
- اسم مستعار خاطئ على المفتاح. مستمع HTTPS في GlassFish مرتبط بالاسم المستعار s1as في ملف domain.xml. إذا أنشأت مفتاحًا تحت اسم مستعار مختلف، لن يتمكن GlassFish من العثور عليه وسيعود المستمع إلى استخدام الشهادة الافتراضية ذاتية التوقيع (أو يفشل في بدء التشغيل). إذا كنت ترغب فعلاً باسم مستعار مختلف، عليك تحديث كل إشارة إلى s1as في domain.xml لتطابقه.
- اسم مستعار خاطئ عند الاستيراد. عندما تُعيد CA الشهادة الموقعة إليك، يجب استيرادها إلى نفس الاسم المستعار الذي يحتوي على المفتاح الخاص. استيرادها تحت اسم مستعار جديد تمامًا سيخزّن الشهادة كإدخال موثوق مستقل دون أي مفتاح خاص مرتبط بها، ولن يعمل TLS.
سجّل هذه القيم الثلاث قبل إغلاق الطرفية:
- الاسم المستعار (الافتراضي s1as؛ حافظ عليه).
- مسار ملف مخزن المفاتيح، على سبيل المثال glassfish/domains/domain1/config/keystore.p12 (أو keystore.jks في الإصدارات الأقدم).
- كلمة مرور مخزن المفاتيح (التي يجب أن تساوي كلمة المرور الرئيسية للمجال).
تحقق من CSR قبل إرساله
اكتشف الأخطاء الإملائية في الاسم المميز (DN) أو نقص أسماء SAN قبل أن تتحقق منها CA. اطبع محتوى CSR باستخدام keytool:
keytool -printcertreq -file glassfish.csr
أو، إذا كان OpenSSL مثبتًا، استخدمه بدلاً من ذلك:
openssl req -noout -text -in glassfish.csr
تأكد من ثلاثة أمور في الناتج: يعرض حقل Subject الاسم المميز (DN) الدقيق الخاص بك، ويسرد Subject Alternative Name كل اسم مضيف تحتاجه، ويطابق حجم Public-Key ما طلبته (RSA بحجم 2048 بت، أو أيًا كان ما اخترته). يمكنك أيضًا لصق CSR في CSR Decoder الخاص بنا لإجراء نفس الفحص عبر المتصفح.
إرسال CSR إلى جهة إصدار الشهادات (CA)
افتح ملف glassfish.csr في أي محرر نصوص. الملف عبارة عن نص عادي، يبدأ بـ —–BEGIN CERTIFICATE REQUEST—– وينتهي بـ —–END CERTIFICATE REQUEST—–. انسخ الكتلة بأكملها، بما في ذلك سطري البداية والنهاية، والصقها في حقل CSR أثناء إتمام الطلب لدى CA الخاصة بك. على Windows، استخدم Ctrl + A ثم Ctrl + C لالتقاط النص الكامل؛ وعلى macOS، استخدم Cmd + A ثم Cmd + C.
بعد أن تتحقق CA من طلبك وتصدر الشهادة، تابع مع كيفية تثبيت شهادة SSL على GlassFish. ستستورد سلسلة CA كموثوقة، ثم تستورد الشهادة الموقعة مرة أخرى إلى الاسم المستعار s1as في نفس ملف مخزن المفاتيح (keystore.p12 في 7.1+، أو keystore.jks في الإصدارات الأقدم)، وأخيرًا توجّه مستمع HTTPS إلى ذلك الاسم المستعار.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


