2013-02-20 71 views
7

एक स्वयं हस्ताक्षरित प्रमाणपत्र के साथ javax.net.ssl ​​का उपयोग करने वाले https सर्वर का सरल नेटटी कार्यान्वयन। सर्वर ऊपर है, और उसके बाद अनुरोध DHC by Restlet का उपयोग कर किया गया है। सर्वर साइड पर मैं:javax.net.ssl, https क्लाइंट और close_notify

io.netty.handler.ssl.SslHandler setHandshakeFailure चेतावनी: SSLEngine.closeInbound() बंद किए जा रहे हैं एक अपवाद उठाया। javax.net.ssl.SSLException: पीयर के नज़दीकी_नोटिफी प्राप्त करने से पहले इनबाउंड बंद: संभव छंटनी हमला? sun.security.ssl.Alerts.getSSLException (अज्ञात स्रोत) sun.security.ssl.SSLEngineImpl.fatal (अज्ञात स्रोत) पर sun.security.ssl.SSLEngineImpl.fatal पर (अज्ञात स्रोत) सूरज पर पर। सुरक्षा.ssl.SSLEngineImpl.closeInbound (अज्ञात स्रोत) io.netty.handler.ssl.SslHandler.setHandshakeFailure (SslHandler.java:905) पर io.netty.handler.ssl.SslHandler.channelInactive (SslHandler.javahone76 पर)) io.netty.channel.DefaultChannelHandlerContext.invokeChannelInactive (DefaultChannelHandlerContext.java:819 पर ) io.netty.channel.DefaultChannelHandlerContext.access $ 1300 (DefaultChannelHandlerContext.java:38 पर) io.netty.channel.DefaultChannelHandlerContext $ 5.run पर (DefaultChannelHandlerContext.j एवा: 808) io.netty.channel.SingleThreadEventExecutor.runAllTasks (SingleThreadEventExecutor.java:259 पर) io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:305 पर) io.netty.channel पर। SingleThreadEventExecutor $ 2.run (SingleThreadEventExecutor.java:110) java.lang.Thread.run (अज्ञात स्रोत)

पर और क्लाइंट की तरफ:

कोई जवाब नहीं। प्रमाणपत्र प्रमाणित है? जांचने के लिए यहां क्लिक करें।

क्रोम के पता बार, वही सर्वर-साइड अपवाद पर एक ही अनुरोध जारी करना। फ़ायरफ़ॉक्स के एड्रेस बार पर इसे जारी करना, वही अपवाद है जबकि फ़ायरफ़ॉक्स प्रमाण पत्र के बारे में अपने चेतावनी पृष्ठ को प्रदर्शित कर रहा है जो विश्वसनीय सीए से नहीं है। यह अपवाद बहुत सामान्य लगता है और सीधे यह इंगित नहीं करता कि प्रोटोकॉल की स्थिति है। क्या इसका मतलब यह है कि इन 3 क्लाइंट्स (क्रोम, फ़ायरफ़ॉक्स, DHC by Restlet), प्रोटोकॉल को अच्छी तरह से नहीं खेल रहे हैं और सिर्फ close_notify भेजने के बजाय सर्वर पर गायब हो रहे हैं? या यह है कि एसएसएल आरएफसी या सिर्फ एक सुरक्षा उन्मुख क्लाइंट-साइड डिज़ाइन द्वारा क्लाइंट-साइड व्यवहार अनिवार्य है?

+0

सभी क्लाइंट्स को लगता है मैंने कोशिश की है कि मैं सिर्फ close_notify भेजना छोड़ दूं। शायद क्लाइंट के लिए तुरंत बाहर निकलना अच्छा है, हालांकि सर्वर को थोड़ी परेशान कर दिया गया है कि विस्तृत कारण क्या हो सकता है ... – matanster

+0

हाय मैट। मैं देव HTTP क्लाइंट से https अनुरोध कर रहा हूं और क्लाइंट पक्ष पर एक ही स्थिति रख रहा हूं। आपने इसे कैसे प्रबंधित किया? –

+0

@ एंटोनियोएसेवेडो, ऐसा लगता है कि अविश्वसनीय प्रमाणपत्र से कनेक्ट करते समय आम ग्राहक निम्न तरीके से व्यवहार करते हैं - वे कनेक्शन बंद करते हैं और उपयोगकर्ता को संकेत देते हैं। तो सभी सर्वर देखता है कि क्लाइंट उन पर गायब हो रहा है, लेकिन क्लाइंट सर्वर को इसके कारण के बारे में सूचित नहीं करता है। यह क्लाइंट परिप्रेक्ष्य से सुरक्षा-वार समझता है (दूसरी पार्टी को सुरक्षा समस्या पर कम से कम जानकारी का वितरण करना एक अच्छा अभ्यास है)। इसलिए इस स्थिति को 'हल करने' की आवश्यकता नहीं है, बल्कि इसे केवल एक के रूप में स्वीकार कर रहा है। – matanster

उत्तर

5

मैं DHC by Restlet टीम के साथ संपर्क किया है और उन्होंने मुझे एक वैकल्पिक हल बता दिया है:

क्रोम प्रमाणपत्रों को प्रबंधित करने के लिए एक API प्रदान नहीं करता है। दूसरे शब्दों में, हमारे पास आपके प्रमाणपत्र को स्वचालित रूप से स्वीकार करने के लिए कोई तरीका नहीं है और न ही 'अविश्वसनीय प्रमाणपत्र' संवाद को कैसे बढ़ाया जाए। लेकिन, आप थोड़ा वर्कअराउंड का उपयोग कर सकते हैं:

  1. किसी अन्य टैब में https यूआरएल खोलें।
  2. प्रमाण पत्र मैन्युअल रूप से स्वीकार करें।
  3. डीएचसी पर वापस जाएं और यह काम करेगा क्योंकि आपका प्रमाणपत्र पिछले चरण से मैन्युअल रूप से स्वीकार किया गया है (आपके क्रोम में संग्रहीत है)।

आमतौर पर आपको इसे एक बार करना होगा।

+0

कूल समाधान। मुझे लगता है कि यह फिट हो सकता है क्योंकि यह स्वयं का 'अपने स्वयं के प्रश्न का उत्तर देता है' क्योंकि यहां मूल प्रश्न यह था कि क्यों और वास्तव में नज़दीकी नॉटिफाइफ़ लोकप्रिय ग्राहकों द्वारा नहीं भेजा जा रहा है .... कूल वर्कअराउंड! मदद करने में खुशी! – matanster

1

मुझे इस समस्या का सामना करना पड़ा जब मैं लिनक्स मशीन पर जावा के खुले जेडीके संस्करण को स्थापित कर रहा था, जब मैंने जावा संस्करण को ओरेकल जेडीके में बदल दिया तो यह मुद्दा गायब हो गया।

इस अपवाद को फेंकने वाला सटीक एप्लिकेशन सूचना वर्कबेंच (तरल पदार्थ उत्पाद) और जावा संस्करण 8 था, तरल पदार्थ से लोगों द्वारा सिस्टम पूर्वाग्रहों में जावा के किस संस्करण का उल्लेख नहीं किया गया था।