سؤال

لدي مشكلة صغيرة مع استخدام SSL على Tomcat وراء أباتشي. لقد استخدمت Google كل صباح في محاولة للعثور على حل جيد، ولكن لا شيء حتى الآن.

كجزء من التكوين الخاص بي Virtualhost الخاص بي

<Location /MyApp/>
  ProxyPass http://localhost:8080/MyApp/
</Location>

هذا يعمل بشكل جيد بالنسبة لمعظم الحالات، ولكن J_Security_check، بعد تسجيل الدخول الناجح من https://mysite.com/myapp., ، يعيد توجيه إلى صفحة HTTP http://mysite.com/myapp/secret.html بدلا من تركها كصفحة HTTPS https://mysite.com/myapp/secret.html. وبعد ليس فقط تسجيل الدخول هذا سري، ولكن البيانات التي يتم نقلها، لذلك أحتاج إلى إبقائها HTTPS. عندما أضيف إلى أمن التطبيق غير طرف

<user-data-constraint>
  <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

يعيد توجيه إلى https://mysite.com:8443/myapp/secret.html.. وبعد أدرك أنه يعيد توجيه إلى 8443 لأن Server.xml يحتوي على SSL تم تكوين SSL إلى 8443، ولكن نظرا لأن هذا يمول من خلال Apache، فيجب أن يكون ذلك 443.

أدرك أنني لا أملك أي proxypassreverse، لكن هذا ليس شيئا يمكنني إضافته داخل قسم من ملف تكوين Apache

كيف يمكنني إجبار J_Security_check إما إعادة توجيه قريب (لذلك لا تغيير HTTPS إلى HTTP) أو لإعادة توجيه إلى 443 بدلا من 8443؟ هل هذا شيء يجب أن أفرضه عبر Tomcat أو Apache's mod_proxy؟

هتافات

نيك

هل كانت مفيدة؟

المحلول

لا يمكنك الاعتماد حقا على Tomcat للقيام بإعادة توجيه إلى SSL لإعدادك. تحتاج إلى كتابة مرشح للقيام بإعادة توجيه نفسك.

بالنسبة لإعدادك المحدد، قد يعمل إذا قمت بإضافة إعادة توجيهات مثل هذا،

<Connector ... port="8080" redirectPort="443"/>

الرجاء إزالة موصل HTTPS. قد يخلط بين بعض الإصدار من Tomcat عندما يكون لديك كل من موصل RedirectPort و HTTPS. يبدو أنك لا تريد أن يصل الأشخاص إلى منفذ HTTPS الخاص بك على أي حال.

هذا يعمل فقط عندما يكون لديك Apache و Tomcat على نفس الجهاز. في بيئة الإنتاج، قد لا يكون هذا هو الحال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top