दिलचस्प पोस्ट
Jquery का उपयोग करते हुए स्पैन तत्व के बाद पाठ प्राप्त करें सी में सॉकेट्स के माध्यम से एक संरचना उत्तीर्ण करना एक्शनबर्न लोगो केंद्रित और कार्रवाई आइटम पक्षों पर MySQL 600K पंक्तियों से 10 यादृच्छिक पंक्तियों का चयन करें क्यूटी: नहीं मिल सकता- एलजीएल त्रुटि कोड से जावा स्विंग एप्लिकेशन को बंद कैसे करें पायथन में श्रेणी के बाहर इंडेक्स पर डिफ़ॉल्ट मान प्राप्त करना क्या मैं रनटाइम पर एक विशिष्ट सबव्यूज के लिए ऑटोलेआउट अक्षम कर सकता हूं? जावा: एक enum से एक यादृच्छिक मूल्य उठाओ? Master..spt_values ​​का उपयोग करके कॉलम को विभाजित करने के लिए क्यों (और कैसे)? मैं आईओएस के लिए फोनगैप में यह स्क्रिप्ट कैसे स्थापित करूं? जावास्क्रिप्ट में = = _ मतलब क्या है PHP के साथ एक .JSON फ़ाइल में डेटा जोड़ें AngularJS अनुप्रयोग फ़ाइल संरचना एक स्टोरीबोर्ड की बजाय निबेट में प्रोटोटाइप सेल

javax.net.ssl.SSLHandshakeException: वेब सेवा संचार के दौरान रिमोट होस्ट को हैंडशेक के दौरान बंद कर दिया गया

मुझे javax.net.ssl.SSLHandshakeException मिल रहा है : जब मैं इंटरनेट के माध्यम से वेब सेवा के एचटीटीपीएस पोस्ट करने की कोशिश करता हूं, तो दूरस्थ होस्ट ने हाथ मिलाने के अपवाद के दौरान कनेक्शन को बंद कर दिया था.लेकिन एक ही कोड अन्य इंटरनेट होस्टेड वेब सेवाओं के लिए काम करता है। मैंने कई चीजों की कोशिश की, कुछ भी मेरी मदद नहीं कर रहा है मैंने अपना नमूना कोड यहां पोस्ट किया। कोई भी इस समस्या को सुलझाने में मेरी सहायता कर सकता है।

public static void main(String[] args) throws Exception { String xmlServerURL = "https://example.com/soap/WsRouter"; URL urlXMLServer = new URL(xmlServerURL); // URLConnection supports HTTPS protocol only with JDK 1.4+ Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress( "xxxx.example.com", 8083)); HttpURLConnection httpsURLConnection = (HttpURLConnection) urlXMLServer .openConnection(proxy); httpsURLConnection.setRequestProperty("Content-Type","text/xml; charset=utf-8"); //httpsURLConnection.setDoInput(true); httpsURLConnection.setDoOutput(true); httpsURLConnection.setConnectTimeout(300000); //httpsURLConnection.setIgnoreProxy(false); httpsURLConnection.setRequestMethod("POST"); //httpsURLConnection.setHostnameVerifier(DO_NOT_VERIFY); // send request PrintWriter out = new PrintWriter( httpsURLConnection.getOutputStream()); StringBuffer requestXML = new StringBuffer(); requestXML.append(getProcessWorkOrderSOAPXML()); // get list of user out.println(requestXML.toString()); out.close(); out.flush(); System.out.println("XML Request POSTed to " + xmlServerURL + "\n"); System.out.println(requestXML.toString() + "\n"); //Thread.sleep(60000); // read response BufferedReader in = new BufferedReader(new InputStreamReader( httpsURLConnection.getInputStream())); String line; String respXML = ""; while ((line = in.readLine()) != null) { respXML += line; } in.close(); // output response respXML = URLDecoder.decode(respXML, "UTF-8"); System.out.println("\nXML Response\n"); System.out.println(respXML); } 

पूर्ण स्केकेटस:

 Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) at com.labcorp.efone.vendor.TestATTConnectivity.main(TestATTConnectivity.java:43) Caused by: java.io.EOFException: SSL peer shut down incorrectly at sun.security.ssl.InputRecord.read(InputRecord.java:482) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) ... 8 more 

असल में, यहां दो परिदृश्य हैं जब मैं एक स्टैंडअलोन जावा प्रोग्राम के रूप में काम करता हूं तो मुझे ऊपर अपवाद मिल रहा है। लेकिन जब मैं वेबलॉगिक अनुप्रयोग सर्वर में निष्पादित करने की कोशिश करता हूं, तो मुझे नीचे अपवाद मिल रहा है: कोई भी कारण यह हो सकता है कि कोई कारण हो सकता है?

 java.io.IOException: Connection closed, EOF detected at weblogic.socket.JSSEFilterImpl.handleUnwrapResults(JSSEFilterImpl.java:637) at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:515) at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:96) at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:75) at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:448) at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:93) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:192) at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:433) at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37) at com.labcorp.efone.service.impl.WorkOrderServiceImpl.processATTWorkOrder(ATTWorkOrderServiceImpl.java:86) at com.labcorp.efone.bds.WorkOrderBusinessDelegateImpl.processATTWorkOrder(WorkOrderBusinessDelegateImpl.java:59) at com.labcorp.efone.actions.ATTWorkOrderAction.efonePerformForward(ATTWorkOrderAction.java:41) at com.labcorp.efone.actions.EfoneAction.efonePerformActionForward(EfoneAction.java:149) at com.labcorp.efone.actions.EfoneAction.execute(EfoneAction.java:225) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:751) at javax.servlet.http.HttpServlet.service(HttpServlet.java:844) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at com.labcorp.efone.security.EfoneAuthenticationFilter.doFilter(EfoneAuthenticationFilter.java:115) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3367) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564) at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295) at weblogic.work.ExecuteThread.run(ExecuteThread.java:254) Exception: java.io.IOException: Connection closed, EOF detected 

Solutions Collecting From Web of "javax.net.ssl.SSLHandshakeException: वेब सेवा संचार के दौरान रिमोट होस्ट को हैंडशेक के दौरान बंद कर दिया गया"

जावा 7 डिफ़ॉल्ट रूप से TLS 1.0 है, जो इस त्रुटि का कारण हो सकता है जब वह प्रोटोकॉल स्वीकार नहीं किया जाता है। मैं एक टॉमकेट एप्लिकेशन और एक सर्वर के साथ इस समस्या में गया था जो अब TLS 1.0 कनेक्शन स्वीकार नहीं करेगा। मैंने कहा

 -Dhttps.protocols=TLSv1.1,TLSv1.2 

जावा विकल्पों के लिए और यह तय है। (टॉमकेट चल रहा था जावा 7.)

अभी तक कोई जवाब नहीं, लेकिन एक टिप्पणी के लिए बहुत अधिक है यह स्पष्ट रूप से एक सर्वर प्रमाणपत्र समस्या नहीं है; इसके लक्षण काफी अलग हैं आपके सिस्टम के पीओवी से, सर्वर हैंडशेक के दौरान बंद हो रहा है। दो संभावनाएं हैं:

सर्वर सचमुच बंद हो रहा है, जो कि एक एसएसएल / टीएलएस प्रोटोकॉल उल्लंघन है, हालांकि काफी मामूली है; ऐसे कुछ कारण हैं जो एक सर्वर आपके साथ हाथ मिलाने में असफल हो सकता है लेकिन इसे पहले एक घातक चेतावनी भेजना चाहिए, जो कि आपके जेएसएसई या वेबलॉगिक समकक्ष को इंगित करना चाहिए। इस मामले में अच्छी तरह से सर्वर लॉग में कुछ उपयोगी जानकारी हो सकती है, यदि आप जानकार सर्वर व्यवस्थापक के साथ संवाद करने में सक्षम (और अनुमति) हैं या फिर आप अपने क्लाइंट मशीन पर एक नेटवर्क मॉनिटर लगाने की कोशिश कर सकते हैं, या एक करीब पर्याप्त यह आपके सभी ट्रैफ़िक को देखता है; निजी तौर पर मुझे पसंद है http://www.wireshark.org। लेकिन यह आमतौर पर केवल यह दिखाता है कि क्लाइंट हेलो के तुरंत बाद बंद तुरंत आया, जो इसे नीचे ज्यादा संकीर्ण नहीं करता है यदि आप इस सर्वर के लिए "क्लाइंट प्रमाणपत्र" (वास्तव में कुंजी और प्रमाणपत्र, जावा निजी किएनएन्ट्री के रूप में) को कॉन्फ़िगर और कॉन्फ़िगर किया है, तो आप यह नहीं कहेंगे; अगर यह सर्वर द्वारा आवश्यक है और सही नहीं है, तो कुछ सर्वर यह मान सकते हैं कि एक हमले के रूप में और जानबूझकर प्रोटोकॉल का उल्लंघन करके आधिकारिक तौर पर बंद होने पर भी उन्हें एक चेतावनी भेजनी चाहिए।

या, नेटवर्क में कुछ मध्यबॉक्स, अक्सर फ़ायरवॉल या कथित तौर पर पारदर्शी प्रॉक्सी, तय कर रहा है कि यह आपके कनेक्शन को पसंद नहीं करता है और करीबी को मजबूर करता है। आपके द्वारा उपयोग किया जा रहा प्रॉक्सी एक स्पष्ट संदेह है; जब आप कहते हैं कि "समान कोड" अन्य मेजबानों के लिए काम करता है, तो पुष्टि करें कि क्या आप एक ही प्रॉक्सी (केवल एक प्रॉक्सी नहीं) और HTTPS (स्पष्ट HTTP नहीं) का उपयोग करके मतलब है। अगर ऐसा नहीं है, प्रॉक्सी के माध्यम से अन्य होस्टों को HTTPS के साथ परीक्षण करने की कोशिश करें (आपको एक पूर्ण SOAP अनुरोध भेजने की आवश्यकता नहीं है, बस एक GET / यदि पर्याप्त है)। यदि आप कर सकते हैं, प्रॉक्सी के बिना कनेक्ट करने का प्रयास करें, संभवतः एक अलग प्रॉक्सी, और होस्ट को प्रॉक्सी के माध्यम से HTTP (नहीं एस) को जोड़ने (यदि दोनों समर्थन स्पष्ट है) और देखें कि क्या वे काम

यदि आप वास्तविक होस्ट को प्रकाशित करने में कोई दिक्कत नहीं करते हैं (लेकिन निश्चित रूप से किसी भी प्रमाणीकरण प्रमाणिकता नहीं) अन्य लोग इसका प्रयास कर सकते हैं या आप http://www.ssllabs.com पर जा सकते हैं और अनुरोध करते हैं कि वे सर्वर का परीक्षण करें (परिणाम प्रकाशित किए बिना); यह SSL / TLS कनेक्शन पर कई सामान्य रूपांतरों का प्रयास करेगा और यह देखने वाली किसी भी त्रुटि की रिपोर्ट करेगा, साथ ही साथ किसी भी सुरक्षा कमजोरियों की रिपोर्ट करेगा।

मुझे लगता है कि आप अपने प्रमाणपत्र याद कर रहे हैं।

आप InstallCerts ऐप का उपयोग कर उन्हें सृजित करने का प्रयास कर सकते हैं। यहां आप इसका उपयोग कैसे कर सकते हैं: http://www.opentox.org/tutorials/q-edit/how-to-install-ssl-certificates

एक बार जब आप अपना प्रमाणपत्र प्राप्त करते हैं, तो आपको इसे अपनी सुरक्षा निर्देशिका के अंतर्गत अपने जेडीके घर में डालना होगा, उदाहरण के लिए:

 C:\Program Files\Java\jdk1.6.0_45\jre\lib\security 

मुझे पता है कि यह काम करता है

मुझे एक ही समस्या का सामना करना पड़ा, मैं इसे जोड़कर हल किया:

 System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); 

खुले कंसक्शन विधि से पहले

मुझे ग्लासफिश एप्लिकेशन सर्वर और ओरेकल जेडीके / जेआरई के साथ एक समान समस्या का सामना करना पड़ा लेकिन ओपन जेडीके / जेआरई में नहीं

जब किसी एसएसएल डोमेन से कनेक्ट हो रहा हो तो मैं हमेशा में चला गया:

 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake ... Caused by: java.io.EOFException: SSL peer shut down incorrectly 

मेरे लिए समाधान जावा क्रिप्टोग्राफ़ी एक्सटेंशन (जेसीई) असीमित शक्ति न्यायक्षेत्र नीति फ़ाइलों को स्थापित करना था क्योंकि सर्वर केवल उन प्रमाण पत्रों को समझाते थे जिन्हें डिफ़ॉल्ट रूप से ओरेकल जेडीके में शामिल नहीं किया गया है, केवल ओपन जेडके में उन्हें शामिल किया गया है। सब कुछ स्थापित करने के बाद मोम की तरह काम किया।


जेसीई 7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

जेसीई 8: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

मैं एक समान मुद्दे पर गया और पाया कि मैं गलत पोर्ट मार रहा था पोर्ट चीजों को ठीक करने के बाद महान काम किया

आपके उत्तर और उदाहरणों को साझा करने के लिए धन्यवाद। वही स्टैंडअलोन प्रोग्राम मेरे लिए छोटे परिवर्तन करके और नीचे दिए गए कोड की लाइनों को जोड़ने के लिए काम किया।

इस मामले में, कीस्टोर फाइल webservice प्रदाता द्वारा दी गई थी

 // Small changes during connection initiation.. // Please add this static block static { HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession arg1) { // TODO Auto-generated method stub if (hostname.equals("XXXX")) { System.out.println("Return TRUE"+hostname); return true; } System.out.println("Return FALSE"); return false; } }); } String xmlServerURL = "https://XXXX:8080/services/EndpointPort"; URL urlXMLServer = new URL(null,xmlServerURL,new sun.net.www.protocol.https.Handler()); HttpsURLConnection httpsURLConnection = (HttpsURLConnection) urlXMLServer .openConnection(); // Below extra lines are added to the same program //Keystore file System.setProperty("javax.net.ssl.keyStore", "Drive:/FullPath/keystorefile.store"); System.setProperty("javax.net.ssl.keyStorePassword", "Password"); // Password given by vendor //TrustStore file System.setProperty("javax.net.ssl.trustStore"Drive:/FullPath/keystorefile.store"); System.setProperty("javax.net.ssl.trustStorePassword", "Password"); 

मुझे जावा 1.6 के साथ इस समस्या का सामना करना पड़ा। जावा 1.7 के तहत चल रहा है, समस्या का मेरा विशेष गायन तय किया। मुझे लगता है कि अंतर्निहित कारण यह था कि जिस सर्वर से मैं कनेक्ट हो रहा था वह 1.6 से कम के मुकाबले मजबूत एन्क्रिप्शन की आवश्यकता होनी चाहिए।

मेरे मामले में, मुझे यह समस्या मिली क्योंकि मैंने सर्वर को एक गैर-मौजूद प्रमाण पत्र दिया था, क्योंकि config फाइल में एक टाइपो के कारण एक अपवाद फेंकने के बजाय, सर्वर सामान्य की तरह आगे बढ़ गया और ग्राहक को एक खाली प्रमाण पत्र भेजा। इसलिए यह सुनिश्चित करने के लिए जांच लायक हो सकता है कि सर्वर सही प्रतिक्रिया प्रदान कर रहा है।

सर्वर से कनेक्ट होने के लिए जर्सी क्लाइंट का उपयोग करते समय मुझे इस त्रुटि का अनुभव हुआ जिस तरह से मैं इसे सुलझाया, वह पुस्तकालय को डिबगिंग करके देख रहा था कि वास्तव में उसे पढ़ने का प्रयास करने के लिए एक ईओएफ प्राप्त हुआ था। मैंने एक वेब ब्राउज़र का प्रयोग करने से भी कनेक्ट करने का प्रयास किया और मुझे उसी परिणाम मिला।

बस इसे यहाँ लिखकर किसी को भी मदद करना समाप्त हो जाता है

इस समस्या का निदान करने के लिए पहला कदम क्लाइंट को शुरू करना है – और यदि आप खुद को सर्वर चला रहे हैं, सर्वर का एक निजी परीक्षण उदाहरण- वीएम विकल्प के साथ जावा को शुरू करके:

 -Djavax.net.debug=all 

यह भी देखें https://blogs.oracle.com/java-platform-group/entry/diagnosing_tls_ssl_and_https

मैं पी 12 का उपयोग कर रहा था जो मैंने अपने मैकबुक में चाबी का गुच्छा के साथ निर्यात किया था, हालांकि, यह मेरे जावा- अप्न्स सर्वर कोड पर काम नहीं करता था मुझे क्या करना था, एक नई पी 12 कुंजी बनाने जैसा था, जैसा कि मैंने पहले ही उत्पन्न की गई पीम कुंजी का उपयोग करके बताया था:

 openssl pkcs12 -export -in your_app.pem -inkey your_key.pem -out your_app_key.p12 

फिर उस नए पी 12 फ़ाइल के पथ को अपडेट किया गया और सबकुछ पूरी तरह से काम किया।

मेरे पास एक ही त्रुटि थी, लेकिन मेरे मामले में यह इंटेलिज आईडीई में DEBUG मोड के कारण हुआ था। डीबग ने लाइब्रेरी को धीमा कर दिया और फिर सर्वर ने हाथ मिलाने के चरण में संचार समाप्त कर दिया। मानक "रन" पूरी तरह से काम किया

मुझे एक ही बार एक ही समस्या का सामना करना पड़ा। मुझे यूआरएल की वजह से लगता है

स्ट्रिंग xmlServerURL = " https://example.com/soap/WsRouter ";

जांचें कि क्या इसकी एक उचित है या नहीं?

javax.net.ssl.SSLHandshakeException क्योंकि सर्वर निम्न कारणों के कारण निर्दिष्ट यूआरएल से कनेक्ट करने में सक्षम नहीं है-

  • या तो वेबसाइट की पहचान सत्यापित नहीं है।
  • सर्वर का प्रमाणपत्र URL से मेल नहीं खाता है
  • या, सर्वर का प्रमाणपत्र विश्वसनीय नहीं है

आप यह नीचे कोड लिख सकते हैं अपने मौजूदा जावा प्रोग्राम को अंदाजा लगा सकते हैं

System.setProperty ("https.protocols", "TLSv1.1");

या

System.setProperty ("http.proxyHost", "proxy.com"); System.setProperty ("http.proxy पोर्ट", "911");

जावा \ jdk \ jre \ lib \ security फ़ोल्डर में प्रमाण पत्र जोड़ना मेरे लिए काम किया। यदि आप क्रोम का उपयोग कर रहे हैं, तो हरी बल्ब पर [ https://support.google.com/chrome/answer/95617?p=ui_security_indicator&rd=1%5D क्लिक करें और सुरक्षा फ़ोल्डर में प्रमाणपत्र सहेजें।

सामान्य पोर्टों की तुलना में SSL अधिक स्मृति लेता है बस एसएसएल पोर्ट के लिए और अधिक मेमोरी उपलब्ध कराएं अपने आवेदन के पोर्ट कन्फिगरेशन में "हेडरबफ़र साइज़" पर मैं इसे 16k से 64k में बदलता हूं।