2012-04-06 22 views
9

के पीछे मैं हर जगह तलाश कर दिया गया है, लेकिन निम्न स्थिति के लिए एक स्पष्ट समाधान नहीं मिल सकता है:बिलाव अपाचे और एसएसएल

हम एक वेब अनुप्रयोग है (Grails + स्प्रिंग सुरक्षा) कि बिल्ला में चल रहा है अपाचे के पीछे,। भाग को https पर चलाने की आवश्यकता है, इसलिए स्प्रिंग सिक्योरिटी चैनल सिक्योरिटी का उपयोग करके, जब भी आप सुरक्षित एप्लिकेशन के किसी हिस्से पर नेविगेट करते हैं, तो वसंत आपको 302 स्टेटस कोड के साथ https पर रीडायरेक्ट करेगा।

अब, टोमकैट को https और प्रमाणपत्रों के बारे में जानने के लिए सेट किया गया है, इसलिए यह एसएसएल को संभालने के बारे में जानता है। वास्तव में, जब सीधे यूआरएल और बंदरगाह पर सीधे जाकर टोमकैट हिट करने के लिए साइड-स्टेपिंग अपाचे, सबकुछ 100% काम करता है।

समस्या अब टॉमकैट के सामने अपाचे डालने पर आता है। इस समय हमारे पास अपाचे कॉन्फ़िगरेशन एप्लिकेशन के गैर-सुरक्षित हिस्सों के लिए ठीक काम करता है। हम प्रॉक्सी अपाचे और टोमकैट में mod_jk का उपयोग कर रहे हैं।

हालांकि, जैसे ही आप आवेदन की एक सुरक्षित हिस्से के लिए जाने की कोशिश, स्प्रिंग पर पहुंच जाएंगे, यह अपाचे config की

<VirtualHost _default_:443> ... </VirtualHost> 

हिस्सा मारा होगा ... और यह कहाँ है समस्या शुरू होती है।

जो मैंने पढ़ा है उससे, अपाचे के लिए, mod_jk के माध्यम से, एसएसएल हैंडलिंग को टोमकैट से पास करने के लिए संभव है। लेकिन हम इस सही के लिए विन्यास प्राप्त नहीं कर सकते हैं। चूंकि टोमकैट पहले ही एसएसएल के लिए स्थापित है, यह जानता है कि सर्टिफिकेट कहां हैं, और स्प्रिंग सिक्योरिटी की स्थापना की गई है, हम टोमकैट को सभी एसएसएल को संभालने के लिए चाहते हैं, और अपाचे को केवल टॉमकैट तक पहुंचाने के लिए।

क्या यह सब संभव है, या क्या मुझे कुछ याद आ रहा है? क्या किसी को यह निर्धारित करने के लिए कुछ स्पष्ट निर्देश है? किसी भी प्रकार की सहायता सराहनीय होगी।

हम अपाचे 2.2 और tomat 7.0.27

धन्यवाद

उत्तर

5

तुम बस अपाचे से बिलाव के लिए SSL/TLS यातायात रिले नहीं कर सकते हैं का उपयोग कर रहे हैं। या तो आपका एसएसएल कनेक्शन अपाचे पर समाप्त होता है, और फिर आपको प्रॉक्सी को टॉमकैट पर ट्रैफिक को उलटना चाहिए (एसएसएल इस मामले में शायद ही कभी उपयोगी है), या आप क्लाइंट को सीधे टोमकैट से कनेक्ट कर देते हैं और इसे एसएसएल कनेक्शन को संभालने देते हैं।

मुझे यकीन नहीं है कि आपने पढ़ा है कि mod_jk एसएसएल कनेक्शन को टॉमकैट पर ही पास कर सकता है। इसे सीधे सॉकेट को रिले करना होगा, इसलिए mod_jk द्वारा उपयोग किए गए एजेपी प्रोटोकॉल को छोड़कर (mod_proxy_ajp वैसे भी नया तरीका है, या यहां तक ​​कि mod_proxy_http)।

मुझे यकीन नहीं है कि आप चाहते हैं कि अपाचे को टोमकैट के सामने क्यों होना चाहिए यदि आप चाहते हैं कि टोमकैट एसएसएल अनुरोधों को किसी भी तरह से संभाले। अगर इसे पोर्ट नंबर या कुछ के साथ करना है, तो पोर्ट 443 को टॉमकैट पोर्ट पर अग्रेषित करने के लिए फ़ायरवॉल नियम का उपयोग करें।

इसके अतिरिक्त, HTTP से HTTPS तक इन स्वचालित पुनर्निर्देशन के तरीके के बारे में सावधान रहें: they only happen after the initial HTTP request has been made

+1

मैं सहमत हूं। विशेष रूप से mod_proxy_ * बिंदु के बारे में। हम अपाचे का उपयोग करते हैं जो हमारे एसएसएल को नियंत्रित करता है और फिर modqproxy_http को टॉमकैट के अनुरोधों को अग्रेषित करने के लिए। बहुत अच्छा काम करता है। और सुपर सरल विन्यास। – Gregg

0

आपकी पोस्ट से, मैं यह नहीं बता सकता कि आप अपाचे पर काम करने के लिए एसएसएल प्राप्त करते समय किसी समस्या में भाग रहे हैं या नहीं, क्योंकि आपके पास http पर आपके कुछ ऐप हैं, अपाचे कभी एसएसएल पर रीडायरेक्ट नहीं करता है। ध्यान दें कि एसएसएल पर एकाधिक "सेगमेंट" होने का बिल्कुल ठीक है (जिसका अर्थ है उपयोगकर्ता -> एसएसएल पर अपाचे और अपाचे -> एसएसएल पर टोमकैट)।
1।यदि समस्या अपाचे पर काम करने के लिए एसएसएल प्राप्त कर रही है - आपको यह सुनिश्चित करना होगा कि एसएएसएल अपाचे एंड पर सही तरीके से सेटअप हो।
2. यदि समस्या "रीडायरेक्ट" है, तो http और https के लिए अलग यूआरएल को आजमाएं और रखें। /something.mysite.com/non_ssl/ और /something.mysite.com/ssl/ की तरह। इससे अपाचे में नियम लिखना आसान हो जाएगा।

संबंधित मुद्दे