دليل خطوة بخطوة لتمكين HTTPS أو SSL بالطريقة الصحيحة على خادم Apache Tomcat - المنفذ 8443
نشرت: 2021-04-03لقد مرت 12 عامًا تقريبًا على استخدام Apache Tomcat. أعتقد أنه عندما أتممت مشروعي الأول تحت الصف ، كان على Tomcat الإصدار 1.x
الآن هو بالفعل في الإصدار 8.0
. غالبًا ما كنت على اتصال بـ Tomcat Server في حياتي العملية اليومية ، ولا يمكنني العيش بدونها.
لقد نشرنا بالفعل في Crunchify ما يقرب من 40 مقالة على Apache Tomcat
. في معظم البرنامج التعليمي ، قمت بتشغيل الخادم على المنفذ 8080 وهو المنفذ الافتراضي الذي تم تكوينه في ملف server.xml
.
سننتقل في هذا البرنامج التعليمي إلى جميع الخطوات بالتفصيل حول how to enable HTTPS/SSL on Apache Tomcat Server
.
هيا بنا نبدأ:
الخطوة 1. إنشاء Keystore
keytool
: سننشئ مفتاحًا آمنًا باستخدام أمر keytool
- وهو أداة إدارة المفتاح والشهادة.
أمر:
1 2 3 4 |
bash - 3.2 $ pwd / Users / Shared bash - 3.2 $ keytool - genkey - alias crunchify - keyalg RSA - keystore / Users / Shared / crunchify . keystore |
سيتم إنشاء الملف ضمن مجلد /Users/Shared
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
bash - 3.2 $ keytool - genkey - alias crunchify - keyalg RSA - keystore / Users / Shared / crunchify . keystore Enter keystore password : Re - enter new password : What is your first and last name ? [ Unknown ] : App Shah What is the name of your organizational unit ? [ Unknown ] : Crunchify , LLC What is the name of your organization ? [ Unknown ] : Crunchify What is the name of your City or Locality ? [ Unknown ] : New York City What is the name of your State or Province ? [ Unknown ] : NY What is the two - letter country code for this unit ? [ Unknown ] : US Is CN = App Shah , OU = "Crunchify, LLC" , O = Crunchify , L = New York City , ST = NY , C = US correct ? [ no ] : yes Generating 2 , 048 bit RSA key pair and self - signed certificate ( SHA256withRSA ) with a validity of 90 days for : CN = App Shah , OU = "Crunchify, LLC" , O = Crunchify , L = New York City , ST = NY , C = US |
أنا أستخدم نظام التشغيل Mac OS X ، لذا استبدل مسارك وفقًا لذلك إذا كنت تستخدم نظام التشغيل windows. لقد استخدمت كلمة المرور 123456
.
الخطوة 2. إنشاء طلب توقيع شهادة موقعة ذاتيًا
1 2 |
bash - 3.2 $ keytool - certreq - keyalg RSA - alias crunchify - file crunchify . csr - keystore crunchify . keystore Enter keystore password : |
أدخل كلمة المرور: 123456
الخطوه 3. دعنا نتحقق من تشغيل القط الأول على المنفذ 8080 عبر HTTP.
Start
خادم tomcat باستخدام الأمر: <tomcat_home> / bin / startup.sh
.
تأكد من أنك في موقع مسار القط الصحيح.
1 2 3 4 5 6 7 8 9 10 11 |
bash - 3.2 # pwd / Users / Shared / apache - tomcat - 9.0.30 / bin bash - 3.2 $ . / startup . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar Tomcat started . |
اضغط على URL: http://localhost:8080
للتأكد من أن الخادم يعمل.
الخطوة 4. تحقق الآن من مثيل tomcat على المنفذ 8443 عبر HTTPS.
- تحقق الآن من المنفذ 8443 (عنوان URL لـ HTTPS / SSL).
- ضرب URL:
https://localhost:8443
- يجب أن ترى رسالة خطأ. يجب ألا يتم تحميل الصفحة على الإطلاق.
الخطوة 5. قم بتحديث ملف /conf/server.xml
نظرًا لأننا قمنا بإنشاء ملف تخزين المفاتيح وطلب توقيع الشهادة أعلاه ، نحتاج إلى إخبار شركة tomcat باستخدام ذلك.
- افتح ملف
server.xml
الموجود في<tomcat_home>/conf/
وقم بتعديل الإعدادات. - في حالتنا هو مجلد
/Users/Shared/apache-tomcat-9.0.30/conf
.
أضف القسم أدناه مباشرة إلى ملف server.xml:

1 2 3 4 5 |
< Connector port = "8443" protocol = "HTTP/1.1" SSLEnabled = "true" maxThreads = "150" scheme = "https" secure = "true" keystoreFile = "/Users/Shared/crunchify.keystore" keystorePass = "123456" clientAuth = "false" sslProtocol = "TLS" sslVerifyClient = "optional" sslEnabledProtocols = "TLSv1.2,TLSv1.1,SSLv2Hello" / > |
- كلمة المرور هنا هي
123456
التي استخدمتها فيStep-1
. - البروتوكول: HTTP / 1.1
احفظ الملف. بعد ذلك سنتوقف ونبدأ Tomcat Server.
الخطوة 6. توقف وابدأ اباتشي تومكات.
- bash-3.2 $ / المستخدمون/Shared/apache-tomcat-9.0.30/bin/shutdown.sh
- bash-3.2 $ / المستخدمون/Shared/apache-tomcat-9.0.30/bin/startup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
bash - 3.2 $ / Users / Shared / apache - tomcat - 9.0.30 / bin / shutdown . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar NOTE : Picked up JDK_JAVA_OPTIONS : -- add - opens = java . base / java . lang = ALL - UNNAMED -- add - opens = java . base / java . io = ALL - UNNAMED -- add - opens = java . rmi / sun . rmi . transport = ALL - UNNAMED bash - 3.2 $ / Users / Shared / apache - tomcat - 9.0.30 / bin / startup . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar Tomcat started . |
الخطوة 7. تحقق من عنوان url وشهادة HTTPS: https: // localhost: 8443
الآن اضغط على عنوان URL الآمن HTTPS مرة أخرى للتحقق من تحميل الصفحة بنجاح.
كروم:
- بشكل افتراضي ،
Chrome Blocks all insecure HTTPS
. - قم بتمكين
Chrome flag
لتحميل الشهادات غير الصالحة للموارد التي تم تحميلها من المضيف المحلي
- اذهب إلى Chrome
- افتح علامة التبويب
- النوع:
chrome://flags/#allow-insecure-localhost
- تمكين العلم من القائمة المنسدلة
- أعد تشغيل Chrome
Safari و Mozilla Firefox:
-
Accept invalid certificate error
وزيارة الموقع.
يجب أن تشاهد صفحة Apache Tomcat يتم تحميلها عبر HTTPS على المنفذ 8443
أنت كل مجموعة. هل لاحظت red padlock
؟ لا تقلق. لم نشتري شهادة SSL من Verisign أو Comodo.
في بيئة الإنتاج قد لا ترى علامة الصليب الأحمر.
انقر فوق الشهادة في المتصفح وستكون الشهادة الافتراضية الموقعة ذاتيًا
valid for 90
يومًا.
نقطة إضافية:
كيف تتحقق من cert content
الخاص بك باستخدام keytool
؟
1 |
bash - 3.2 # keytool -list -keystore /Users/<username>/crunchify.keystore |
نتيجة:
1 2 3 4 5 6 7 8 9 10 11 12 |
bash - 3.2 $ keytool - list - keystore / Users / Shared / crunchify . keystore Enter keystore password : Keystore type : PKCS12 Keystore provider : SUN Your keystore contains 1 entry crunchify , Apr 24 , 2020 , PrivateKeyEntry , Certificate fingerprint ( SHA - 256 ) : 9D : 26 : 77 : E0 : E8 : 79 : 5B : 46 : 57 : 64 : 04 : 95 : B8 : 22 : 9C : E2 : 9F : A4 : 82 : CB : 01 : B5 : 80 : 62 : 75 : 90 : 48 : 27 : 5F : 60 : CB : C8 bash - 3.2 $ |