2012-03-29 19 views
6

मैं प्ले फ्रेमवर्क 2.0 का उपयोग कर वेब सर्वर पर काम कर रहा हूं, जहां लॉगिन एक एंड्रॉइड डिवाइस सॉफ़्टवेयर द्वारा निष्पादित किया जाता है जिसे हम भी बना रहे हैं। और मुख्य चिंता यह है कि हमें play 2.0 में HTTPS के लिए कोई समर्थन नहीं मिल रहा है। सेंस यह एक स्कूल प्रोजेक्ट है जिसे हम अपने लिए एचटीटीपीएस को हल करने के लिए बादलों और अन्य प्रॉक्सी से आगे नहीं जा सकते हैं।प्ले-फ्रेमवर्क [2.0] HTTPS

हमारी मुख्य समस्या पासवर्ड के ईमेल में अनुरोध और शरीर में सादे दृष्टि में जा रही है, मोबाइल डिवाइस में एन्क्रिप्टिंग और डिक्रिप्टिंग और सर्वर पर प्रदर्शन और समझ में महंगी लगती है एचटीटीपीएस इसका ख्याल रखती है, हम इससे बचना चाहते हैं। क्या कोई तरीका है कि हम उपयोगकर्ता लॉगिन डेटा, या किसी अन्य सुझाव की सुरक्षा के लिए HTTPS का उपयोग कर सकते हैं।

यदि नहीं, तो हमें सभी को माइग्रेट करना पड़ सकता है, सभी आवेदन किसी अन्य ढांचे पर हैं, क्योंकि यह बिना किसी एन्क्रिप्शन के इंटरनेट के माध्यम से जाने वाले अच्छे महत्वपूर्ण गोपनीय डेटा को नहीं देखता है।

उत्तर

4

ऐतिहासिक रूप से, मैंने देखा है कि अधिकांश लोग किसी प्रकार की रिवर्स प्रॉक्सी के पीछे जावा/स्कैला एप्लिकेशन सर्वर चलाते हैं। अपाचे में HTTPS सेट अप करना बहुत कठिन नहीं है, और फिर अपने Play एप्लिकेशन में आंतरिक रूप से अनुरोध भेजने के लिए बस ModProxy का उपयोग करें।

रिवर्स प्रॉक्सी सिस्टम में से कोई भी ऐसा कर सकता है, nginx भी लोकप्रिय है, और आम तौर पर अपाचे से आसान कॉन्फ़िगरेशन है, लेकिन मैंने कभी भी HTTPS के साथ इसका उपयोग नहीं किया है।

सामान्य रूप से ऐसा करने का एक कारण सुरक्षा है। आप जावा प्रोग्राम को पोर्ट 80 पर गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में प्रारंभ नहीं कर सकते हैं। यदि आप पोर्ट जावा पर चल रहे रूट के रूप में अपना जावा प्रोग्राम शुरू करते हैं, तो आपके एप्लिकेशन में किसी भी छेद में रूट विशेषाधिकार हैं! नतीजतन, जावा ऐप को किसी अन्य बंदरगाह पर शुरू करना, फिर वेब सर्वर से प्रॉक्सी को रिवर्स करें जो पोर्ट 80 पर गैर-प्रीइलेज्ड उपयोगकर्ता के रूप में चलाया जा सकता है।

(*) यह थोड़ा अधिक सरलीकृत है, लेकिन एक चर्चा इस अजीबता के बारे में मुझे लगता है कि इस के दायरे से बाहर है।

+0

आप के साथ पोर्ट 80 पर एक गैर विशेषाधिकार प्राप्त उपयोगकर्ता शुरू कर सकते हैं ** authbind ** और/या ** jsvc ** जो होगा रूट के रूप में शुरू करें, पोर्ट को बांधें और फिर अपने जावा प्रोग्राम को शुरू करने से पहले अपने उपयोगकर्ता को डाउनग्रेड करें। –

+0

उदाहरण के लिए, "iptables अग्रेषित पोर्ट 80 से 8080" के लिए Google - एक उच्च बंदरगाह पर Google को अपने गैर-रूट एप्लिकेशन पर ट्रैफ़िक को अग्रेषित करने के लिए आप iptables का उपयोग कर सकते हैं। – KajMagnus

2

अब Play और https का उपयोग करना संभव है। इस नाटक में जोड़ा गया है 2.1

, बस के साथ सर्वर प्रारंभ:

JAVA_OPTS=-Dhttps.port=9001 play start