bg-tutorials

كيفية تثبيت شهادة SSL في Tomcat

في هذا البرنامج التعليمي، ستتعلم كيفية تثبيت شهادة SSL على Apache Tomcat باستخدام أداة Java keytool، ثم تكوين موصل HTTPS في server.xml. إذا لم تكن قد أنشأت CSR الخاص بك بعد، فإن القسم الأول يوضح لك كيفية القيام بذلك.

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

إنشاء كود CSR لـ Tomcat

CSR هو اختصار لـ Certificate Signing Request، وهو كتلة نصية تحتوي على التفاصيل الحالية لنطاقك ومؤسستك. يجب على كل مشترٍ لشهادة SSL تجارية تقديم CSR إلى جهة إصدار الشهادات (مزود SSL) لتجاوز التحقق والحصول على الشهادة. إذا كان CSR يحتوي على تفاصيل غير صحيحة، فلن توقعه CA.

على Tomcat، يتم إنشاء CSR باستخدام keytool من مخزن مفاتيح Java (keystore)، ويحتوي نفس المخزن على المفتاح الخاص الذي ستستخدمه مرة أخرى أثناء التثبيت. لديك خياران:

مهم: احتفظ بمعلومات ملف keystore والاسم البديل (alias) اللذين استخدمتهما عند إنشاء CSR. ستقوم لاحقًا باستيراد شهادتك الموقعة إلى نفس الاسم البديل تمامًا، لأن هذا هو المكان الذي يوجد فيه المفتاح الخاص المطابق.

بعد أن تتحقق جهة إصدار الشهادات من طلبك وترسل لك ملفات SSL، تابع عملية التثبيت أدناه.

تثبيت شهادة SSL في Tomcat

يتكون تثبيت Tomcat من مرحلتين: أولًا، تستورد سلسلة الشهادات وشهادتك الموقعة إلى مخزن المفاتيح الذي يحتوي بالفعل على مفتاحك الخاص، ثم تقوم بتكوين موصل HTTPS في server.xml لاستخدام مخزن المفاتيح ذلك.

الخطوة 1: تحضير ملفات شهادة SSL الخاصة بك

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

  • PKCS#7: ملف واحد بامتداد .p7b (أو .cer) يجمع بالفعل شهادتك مع الشهادات الجذر والوسيطة.
  • PEM: ملفات منفصلة، عادةً ملف .crt لشهادة الخادم الخاصة بك بالإضافة إلى ملفات root.crt وintermediate.crt الفردية.

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

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

تنسيق PKCS#7. بسبب أن ملف .p7b يحتوي بالفعل على السلسلة الكاملة، فإن أمرًا واحدًا يستورد كل شيء دفعة واحدة، إلى الاسم البديل الحالي لمفتاحك الخاص:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

استبدل ssldragon باسمك البديل الخاص وexample بأسماء ملفاتك. يجب أن يكون الاسم البديل هو نفسه الذي يحتوي بالفعل على مفتاحك الخاص (الاسم البديل من خطوة CSR). عندما ترى الرسالة Certificate reply was installed in keystore، فإن الاستيراد قد نجح. تحقق من محتويات مخزن المفاتيح باستخدام:

keytool -list -v -keystore example.jks

ابحث عن إدخال يكون نوعه PrivateKeyEntry بطول سلسلة شهادات أكبر من 1. هذا يؤكد أن الشهادة الموقعة مرتبطة الآن بمفتاحك الخاص.

تنسيق PEM. استورد الشهادات بشكل منفصل، بترتيب السلسلة: الجذر أولًا، ثم أي شهادات وسيطة، وشهادة نطاقك في الأخير. استيراد السلسلة أولًا يتيح لـ keytool بناء مسار ثقة كامل قبل ربط الرد بمفتاحك. استورد الشهادة الجذر:

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

ثم استورد الشهادة الوسيطة:

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

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

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

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

هنا، يجب أن يكون ssldragon اسمك البديل الحالي للمفتاح الخاص. لأن هذا الاسم البديل يحتوي بالفعل على مفتاح، تعامل keytool مع هذا الاستيراد على أنه رد شهادة (certificate reply) ويرتبط الشهادة الموقعة بالمفتاح. هذه هي الخطوة التي تجعل HTTPS يعمل.

خطأ حرج يجب تجنبه: لا تستورد الشهادة الموقعة تحت اسم بديل جديد بالكامل. إذا لم يكن الاسم البديل يحتوي على مفتاح خاص موجود، يقوم keytool بتخزين الشهادة كإدخال ثقة مستقل بدون مفتاح مرتبط، وسيفشل TLS. إذا كنت غير متأكد من الاسم البديل الذي يحتوي على مفتاحك، شغّل keytool -list -v -keystore example.jks واستخدم الاسم البديل الذي يكون نوعه PrivateKeyEntry.

الخطوة 3: تكوين موصل HTTPS في server.xml

مع وجود الشهادة في مخزن مفاتيحك، وجّه موصل HTTPS في Tomcat إليها. يتم تعريف الموصل في server.xml، الموجود في مجلد conf من تثبيت Tomcat الخاص بك (على سبيل المثال $CATALINA_HOME/conf/server.xml). افتح الملف في محرر نصوص.

في إصدارات Tomcat الحالية (9، 10، و11)، يتضمن الشكل الموصى به عنصر SSLHostConfig متداخلًا، والذي يحتوي بدوره على عنصر Certificate يشير إلى مخزن مفاتيحك. أضف أو حدّث الموصل الآمن ليبدو كما يلي:

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile: المسار الكامل إلى ملف مخزن مفاتيحك.
  • certificateKeystorePassword: كلمة مرور مخزن المفاتيح.
  • certificateKeystoreType: JKS لمخزن مفاتيح .jks، أو PKCS12 لمخزن مفاتيح .p12 / .pfx.
  • certificateKeyAlias: الاسم البديل الذي يحتوي على مفتاحك الخاص وشهادتك الموقعة (هنا، ssldragon). هذا يخبر Tomcat بأي إدخال يجب تقديمه عندما يحتوي مخزن المفاتيح على أكثر من واحد.

ملاحظة: المنفذ 443 هو منفذ HTTPS القياسي المستخدم أعلاه؛ تستخدم أمثلة Tomcat الخاصة المنفذ 8443 افتراضيًا، لذا استخدم أيًا منهما تتوقعه بيئتك. إذا كانت هذه أول عملية إعداد HTTPS لك، فقد يكون الموصل الآمن معلقًا (commented out) في server.xml. أزل علامات التعليق المحيطة به لتفعيل الموصل، وتأكد من عدم وجود موصل آخر مرتبط بالفعل بنفس المنفذ.

الشكل القديم (إصدارات Tomcat الأقدم). تضع الأدلة القديمة تفاصيل مخزن المفاتيح مباشرة على الموصل كسمات keystoreFile وkeystorePass. تم استبدال هذا الأسلوب بعناصر SSLHostConfig وCertificate المذكورة أعلاه، وهو الشكل الذي يجب استخدامه في إصدارات Tomcat المدعومة.

الخطوة 4: حفظ server.xml وإعادة تشغيل Tomcat

احفظ server.xml، ثم أعد تشغيل Tomcat حتى يعيد تحميل التكوين. على Linux، استخدم البرامج النصية المرفقة:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

إذا كان Tomcat يعمل كخدمة، فأعد تشغيله من خلال مدير الخدمات لديك بدلًا من ذلك (على سبيل المثال systemctl restart tomcat على Linux، أو لوحة الخدمات على Windows). تهانينا، تم الآن تثبيت شهادة SSL على خادم Tomcat الخاص بك.

اختبار تثبيت SSL على Tomcat

بعد تثبيت الشهادة، يمكن أن تتسلل أخطاء صغيرة دون أن يلاحظها أحد وتؤثر على كيفية تعامل المتصفحات مع موقعك. اجعل من فحص التثبيت عادة منتظمة. شغّل SSL Checker الخاص بنا لإجراء فحص فوري يكشف عن مشكلات مثل شهادة وسيطة مفقودة أو سلسلة غير موثوقة.

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

لماذا لا تعمل شهادة SSL على Tomcat بعد استيرادها؟

السبب المعتاد هو استيراد الشهادة الموقعة تحت اسم بديل جديد بدلًا من الاسم البديل الذي يحتوي بالفعل على مفتاحك الخاص. يقوم keytool بعد ذلك بتخزينها كإدخال شهادة موثوق بدون مفتاح، لذا لا يمكن لـ Tomcat إكمال مصافحة TLS. أعد استيراد الرد الموقع إلى الاسم البديل الحالي للمفتاح الخاص (نفس الاسم من CSR الخاص بك). تأكد من نجاح ذلك بتشغيل keytool -list -v -keystore example.jks والتحقق من أن الاسم البديل يظهر كـ PrivateKeyEntry بسلسلة أطول من شهادة واحدة.

هل أستورد سلسلة الشهادات أم شهادة نطاقي أولًا؟

استورد السلسلة أولًا. أضف الشهادة الجذر وأي شهادات وسيطة كإدخالات موثوقة، بالترتيب، ثم استورد شهادة نطاقك إلى الاسم البديل للمفتاح الخاص في الأخير. هذا يتيح لـ keytool بناء مسار ثقة كامل قبل ربط الرد بمفتاحك. مع ملف PKCS#7 (.p7b)، تكون السلسلة مجمعة بالفعل، لذا يتعامل استيراد واحد مع كل شيء.

أين يوجد ملف تكوين SSL على Tomcat؟

يتم تعريف موصل HTTPS في server.xml، في مجلد conf من تثبيت Tomcat الخاص بك (على سبيل المثال $CATALINA_HOME/conf/server.xml). في إصدارات Tomcat الحالية، يتم الإشارة إلى مخزن المفاتيح من خلال عنصر SSLHostConfig وCertificate متداخل بدلًا من وضعه مباشرة على الموصل.

هل يمكنني استخدام مخزن مفاتيح PKCS12 بدلًا من JKS على Tomcat؟

نعم. يدعم Tomcat كلا النوعين. اضبط certificateKeystoreType على PKCS12 لمخزن مفاتيح .p12 أو .pfx، أو JKS لمخزن مفاتيح .jks، ووجّه certificateKeystoreFile إلى الملف المطابق. PKCS12 هو تنسيق مخزن المفاتيح القياسي والقابل للنقل، لذا فهو خيار افتراضي جيد لمخازن المفاتيح الجديدة.

أي منفذ يستخدمه Tomcat لـ HTTPS؟

يستخدم تكوين Tomcat النموذجي المنفذ 8443 للموصل الآمن. لتقديم HTTPS على المنفذ القياسي الذي تستخدمه المتصفحات افتراضيًا، اضبط port الخاص بالموصل على 443 وتأكد من عدم وجود موصل أو خدمة أخرى تستخدمه بالفعل.

كيف أعيد تشغيل Tomcat بعد تغيير تكوين SSL؟

شغّل البرامج النصية المرفقة $CATALINA_HOME/bin/shutdown.sh ثم $CATALINA_HOME/bin/startup.sh، أو أعد تشغيل خدمة Tomcat من خلال مدير الخدمات لديك (على سبيل المثال systemctl restart tomcat على Linux، أو لوحة الخدمات على Windows). إعادة التشغيل مطلوبة لتصبح التغييرات في server.xml نافذة المفعول.

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

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

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

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