2012-05-25 5 views
18

मैं How to configure playframework server to support ssl पढ़ा है और मैं भी http://www.playframework.org/documentation/1.1.1/releasenotes-1.1#https का पालन करने की कोशिश की लेकिन यह मेरे लिए काम नहीं करता हैएसएसएल का समर्थन करने के लिए PlayFramework2 को कॉन्फ़िगर कैसे करें?

बहुत धन्यवाद ~

मैं Play1 के लिए दस्तावेज़ पढ़ क्योंकि मैं किसी भी अधिक अद्यतन नहीं मिल सकता है https के बारे में https2 के बारे में जानकारी।

application.conf में, मैं इन पंक्तियों कहा:

https.port=9443 
certificate.key.file=conf/host.key 
certificate.file=conf/host.cert 

मैं खेलने कंसोल में run टाइप करें, और https://localhost:9443 पर सर्वर तक पहुँचने के लिए सांत्वना उत्पादन में लॉग इन किया कुछ भी बिना ब्राउज़र का समय समाप्त हो कोशिश

+0

क्या काम नहीं करता है? कृपया स्टैकट्रैस और अपनी कॉन्फ़िगरेशन फ़ाइलों जैसी अधिक जानकारी प्रदान करें। इसके अलावा आपने Play 1 के लिए प्रलेखन पढ़ा है और आप Play 2 के लिए SSL कॉन्फ़िगर करने का प्रयास कर रहे हैं, इसलिए गलत दस्तावेज़ –

+0

@ ली-ओ पढ़ने के बाद मैंने अधिक जानकारी के साथ अपडेट किया है। क्या आपके पास https कॉन्फ़िगरेशन के बारे में Play2 के लिए एक अद्यतन दस्तावेज़ है? क्या आप इसे मेरे साथ साझा कर सकते हैं ~? बहुत बहुत धन्यवाद ~ – Chris

उत्तर

24

यह आपके द्वारा उठाए जा रहे दृष्टिकोण के साथ काम नहीं करेगा। आप 2.x शाखा के साथ 1.x शाखा के रिलीज नोट्स गलत कर रहे हैं।

1.x शाखा में, यह संभव है। रिलीज नोट पर्याप्त हैं, और उन्होंने मेरे लिए काम किया।

2.1+ शाखा के लिए, कृपया @ क्रिस्टीना की टिप्पणी देखें। समर्थन 2.1 में जोड़ा गया है और चर्चा धागा विवरण प्रदान करता है।

जेम्स नट की प्रतिक्रिया

देव मोड में का हवाला देते हुए, यह बहुत आसान है बस:

JAVA_OPTS = -Dhttps.port = 9443 खेलने रन

प्ले एक निजी कुंजी और स्वयं उत्पन्न होगा हस्ताक्षरित प्रमाण पत्र, जो स्पष्ट रूप से आपका ब्राउज़र एक बड़ी लाल चेतावनी के साथ झुकाएगा। यह पुन: उपयोग करेगा जो प्रत्येक आगामी रन प्ले के लिए स्वयं हस्ताक्षरित प्रमाणपत्र उत्पन्न करता है, इसलिए आपको केवल ब्राउज़र त्रुटि प्राप्त होनी चाहिए। जाहिर है यह स्वयं हस्ताक्षरित प्रमाणपत्र शायद उत्पादन में आप जो चाहते हैं वह नहीं है। यह भी ध्यान रखना महत्वपूर्ण है कि स्वयं हस्ताक्षर प्रमाणपत्र पीढ़ी केवल उन जेवीएम पर काम करेगा जो सूर्य सुरक्षा पुस्तकालयों (जैसे ओरेकल और ओपनजेडीके) का उपयोग करते हैं, लेकिन सबसे विशेष रूप से आईबीएम जे 9 नहीं)। जेवीएम पर जो इनका उपयोग नहीं करते हैं, आपको NoClassDefFoundError प्राप्त होगा जब यह प्रमाण पत्र जेनरेट करने का प्रयास करता है।

प्रोड में (और यह कॉन्फ़िगर भी देव पर लागू होता है) आप सिस्टम गुणों के माध्यम से इसे सामान्य रूप से जावा में SSL को कॉन्फ़िगर करते हैं, तो आप इसे कॉन्फ़िगर करते हैं। - बंदरगाह कि

https इस्तेमाल किया जाना चाहिए

https.port: यहाँ एक सारांश है।KeyStore - कुंजी दुकान प्रकार, "JKS" डिफ़ॉल्ट रूप से

- पथ कुंजीस्टोर निजी कुंजी और प्रमाणपत्र युक्त करने के लिए, नहीं अगर प्रदान के लिए आप

https.keyStoreType एक कीस्ट्रोक उत्पन्न करता है https.keyStorePassword - पासवर्ड, करने के लिए "

https.keyStoreAlgorithm" चूक - कुंजी संग्रह एल्गोरिथ्म, +०१२३५१६४१० प्लेटफार्मों डिफ़ॉल्ट एल्गोरिथ्म के लिएचूक

https.trustStore - यह सुविधा पूरी तरह से लागू नहीं किया गया है, वर्तमान में यह हमेशा ग्राहक के प्रमाणपत्रों की पुष्टि करने के लिए ( JDKs विश्वास की दुकान का उपयोग करेगा जो आप पाठ्यक्रम कॉन्फ़िगर की कर सकते हैं स्वयं) चाहे आप इस के लिए कोई मान प्रदान करते हैं या नहीं, जब तक कि आप "नोसीए" निर्दिष्ट नहीं करते हैं, इस मामले में, यह एक ट्रस्ट स्टोर का उपयोग करेगा जो किसी प्रमाणीकरण या सत्यापन के साथ सभी प्रमाणपत्रों पर भरोसा करता है, जो वेबिड क्लाइंट का उपयोग करने के लिए उपयोगी है साइड प्रमाण पत्र सत्यापन।

2,0 शाखा के लिए, आप खेलने अर्थात के सामने किसी अन्य सर्वर डाल करने के लिए या तो अपाचे/nginx/अन्य जो https पर सुनता है और अनुरोध http में खेलने के लिए अग्रेषित करता है।

सेटअप करने के लिए निर्देश एक दृश्यपटल सर्वर तो एक बंदरगाह पर अपने चलाने सर्वर चलाते http://www.playframework.org/documentation/2.0.1/HTTPServer

पर उपलब्ध हैं। डोमेन.com से 127.0.0.1:9443 तक apache आगे अनुरोध करें।

नमूना अपाचे config

<VirtualHost *:443> 

    ServerAdmin [email protected] 
    ServerName example.com 
    ServerAlias *.example.com 

    ErrorLog ${APACHE_LOG_DIR}/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined 
    ProxyPreserveHost On 
# ProxyPass /excluded ! 
    ProxyPass/http://127.0.0.1:9000/ 
    ProxyPassReverse/http://127.0.0.1:9000/ 


    # SSL Engine Switch: 
    # Enable/Disable SSL for this virtual host. 
    SSLEngine on 

    # A self-signed (snakeoil) certificate can be created by installing 
    # the ssl-cert package. See 
    # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. 
    # If both key and certificate are stored in the same file, only the 
    # SSLCertificateFile directive is needed. 
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem 
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 


    # Certificate Authority (CA): 
    # Set the CA certificate verification path where to find CA 
    # certificates for client authentication or alternatively one 
    <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
    SSLOptions +StdEnvVars 
    </FilesMatch> 
    <Directory /usr/lib/cgi-bin> 
    SSLOptions +StdEnvVars 
    </Directory> 

    BrowserMatch "MSIE [2-6]" \ 
    nokeepalive ssl-unclean-shutdown \ 
    downgrade-1.0 force-response-1.0 
    # MSIE 7 and newer should be able to use keepalive 
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 
</VirtualHost> 

आशा है कि यह मदद करता है।

+7

हालांकि यह लिखा गया था कि जब यह लिखा गया था तो यह मुझे यहां जोड़ने देता है कि एसएसएल समर्थन को 2.1 में जोड़ा गया है जैसा कि [ Google समूह विषय] (https://groups.google.com/d/topic/play-framework/FeTUDQwaEPg/discussion)। – Christina

+0

अद्यतन के लिए धन्यवाद। मैं जवाब – Nasir

+0

संशोधित कर सकता हूं यदि कोई SSL प्रमाणपत्र बना रहा है, यानी स्वयं हस्ताक्षरित प्रमाणपत्र का उपयोग नहीं कर रहा है, तो बनाए गए प्रमाणपत्र की सार्वजनिक कुंजी को Play क्लाइंट के ब्राउज़र में आयात किया जाना चाहिए? –

4

अभी आपके लिए एसएसएल के प्रबंधन के लिए एक रिवर्स प्रॉक्सी की आवश्यकता है। मुझे ticket और thread पर चर्चा हुई।

+0

मदद के लिए धन्यवाद ~ सूचनात्मक पढ़ने के लिए, मैं इस मुद्दे को देख रहा हूं ~ – Chris

0

एक बात हमने किया हमारे एसएसएल, तो सेटअप एसएसएल अग्रेषण (HTTP को संभालने के लिए एडब्ल्यूएस ईएलबी उपयोग करने के लिए था - > एचटीटीपीएस) एक नाटकों फिल्टर का उपयोग कर। मुख्य लाभ, आपके सर्वर से एसएसएल लोड लेता है और आपको खेलने के सामने अपाचे या निगेंक्स चलाने की ज़रूरत नहीं है (कुछ समाधान बिंदु के रूप में)।

तुम मेरे इस सवाल का जवाब यहाँ देख सकते हैं: https://stackoverflow.com/a/23646948/690164

मैं भी अपने ब्लॉग में इसके बारे में थोड़ा और लिखें: http://www.mentful.com/2014/05/25/play-framework-filter-for-aws-elastic-load-balancer-forward-http-to-https/

0

मैं securesocial 3.0.3M उपयोग कर रहा हूँ।

securesocial.ssl = true 

securesocial.conf में सेट करें और आपको जाने के लिए अच्छा होना चाहिए।9443

का आनंद

3

यह स्थानीय स्तर पर परीक्षण https के लिए उपयोगी है:

activator "run -Dhttps.port=9005" 

फिर https://localhost:9005 अपने ब्राउज़र को तो स्थानीय होस्ट करने के लिए साथ

JAVA_OPTS=-Dhttps.port=9443 activator run 

जाओ अपने एसबीटी या उत्प्रेरक को पुनः आरंभ ।

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