2013-01-16 11 views
19

मैं जेटी संस्करण 9.0.0.एम 4 का उपयोग कर रहा हूं और एसएसएल कनेक्शन स्वीकार करने के लिए इसे कॉन्फ़िगर करने की कोशिश कर रहा हूं। इन निर्देशों का पालन करते हुए: http://www.eclipse.org/jetty/documentation/current/configuring-connectors.htmlजेटी 9 के लिए प्रोग्रामेटिक रूप से एसएसएल कॉन्फ़िगर करें

मैंने कुछ काम करने में कामयाब रहा है। हालांकि, मैंने जो कोड लिखा है वह बदसूरत और अनावश्यक रूप से जटिल लगता है। कोई विचार यह ठीक से कैसे करें?

final Server server = new Server(Config.Server.PORT); 

SslContextFactory contextFactory = new SslContextFactory(); 
contextFactory.setKeyStorePath(Config.Location.KEYSTORE_LOCATION); 
contextFactory.setKeyStorePassword("******"); 
SslConnectionFactory sslConnectionFactory = new SslConnectionFactory(contextFactory, org.eclipse.jetty.http.HttpVersion.HTTP_1_1.toString()); 

HttpConfiguration config = new HttpConfiguration(); 
config.setSecureScheme("https"); 
config.setSecurePort(Config.Server.SSL_PORT); 
config.setOutputBufferSize(32786); 
config.setRequestHeaderSize(8192); 
config.setResponseHeaderSize(8192); 
HttpConfiguration sslConfiguration = new HttpConfiguration(config); 
sslConfiguration.addCustomizer(new SecureRequestCustomizer()); 
HttpConnectionFactory httpConnectionFactory = new HttpConnectionFactory(sslConfiguration); 

ServerConnector connector = new ServerConnector(server, sslConnectionFactory, httpConnectionFactory); 
connector.setPort(Config.Server.SSL_PORT); 
server.addConnector(connector); 

server.start(); 
server.join(); 
+0

इस प्रश्न पर अच्छा काम –

उत्तर

10

ServerConnector एक SslContextFactory साथ सेटअप होना चाहिए।

HttpConfiguration में आप जो भी काम कर रहे हैं वह एसएसएल स्थापित करने के लिए अप्रासंगिक है।

एम्बेडेड मोड में एसएसएल स्थापित करने का एक अच्छा उदाहरण embedded jetty examples प्रोजेक्ट में बनाए रखा जाता है। http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

संपादित करें: अधिक स्पष्ट होना (धन्यवाद एरिक)

अद्यतन: जून वर्ष 2016

The Eclipse जेट्टी परियोजना GitHub के लिए अपने विहित भंडार ले जाया गया है।

ऊपर LikeJettyXml.java अब

https://github.com/eclipse/jetty.project/blob/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

+0

"एचटीपी कॉन्फ़िगरेशन में आप जो भी काम कर रहे हैं वह अनावश्यक है।" - क्या अनुरोध/प्रतिक्रिया शीर्षलेख आकार सेट करने का एक बेहतर तरीका है? – Trejkaz

+0

मैं यह नहीं कह रहा हूं कि आप इसका उपयोग नहीं कर सकते हैं, बस आपके प्रश्न में आपके द्वारा निर्धारित लक्ष्यों को पूरा करने के लिए इसकी आवश्यकता नहीं है। यदि आपको हेडर को नियंत्रित करने की आवश्यकता है तो हर तरह से HttpConfiguration का उपयोग करें। –

+0

@ जोकिम एर्डफेल: मुझे * "अनावश्यक है" स्वीकार करना है * भाग ने मुझे कुछ मिनटों के लिए भी परेशान किया है ... शायद यह कहने के लिए अच्छा होगा * "एसएसएल सेट अप करने के लिए अप्रासंगिक" *। अन्यथा +1 –

4

में पाया जा सकता जेट्टी 9 के लिए वहाँ एक अच्छा संदर्भ here है और तुम सब करने की जरूरत है के रूप में समझाया here JKS कुंजीस्टोर फ़ाइल बनाने के लिए है। कमांड keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048 का उपयोग कर। कुछ कारणों से जेटी 8 के साथ क्या काम करता है वह 9 पर काम नहीं करता है।

-1

उन लोगों के लिए जो कॉन्फ़िगरेशन कार्य नहीं कर सकते हैं: यदि आप जावा 1.7 का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपके पास इसका नवीनतम अपडेट है। Jvm 1.7 के पहले संस्करण https वेब पृष्ठों तक पहुंचने में समस्याएं उत्पन्न करते हैं (ब्राउज़र प्रदर्शित हो सकता है: कनेक्शन रीसेट, कनेक्शन निरस्त, या कोई डेटा प्राप्त त्रुटि नहीं)।

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