2011-06-30 21 views
89

मेरे पास नेट पर https सर्वर से बात करने के लिए जावा अनुपालन पैकेज है। संकलन को चलाने से निम्नलिखित अपवाद मिलता है:अपरिचित एसएसएल संदेश, सादा पाठ कनेक्शन? अपवाद

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
    at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source) 
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source) 
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) 
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) 
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source) 

मुझे लगता है कि यह क्लाइंट मशीन के साथ स्थापित कनेक्शन के कारण सुरक्षित नहीं है। रिमोट https सर्वर से कनेक्ट करने के लिए स्थानीय मशीन या पोर्ट को कॉन्फ़िगर करने का कोई तरीका है?

उत्तर

131

मुझे लगता है कि इस संबंध क्लाइंट मशीन के साथ स्थापित की वजह से है सुरक्षित नहीं है।

यह इस तथ्य के कारण है कि आप किसी HTTP सर्वर से बात कर रहे हैं, न कि HTTPS सर्वर। शायद आपने HTTPS के लिए सही पोर्ट नंबर का उपयोग नहीं किया है।

+1

मुझे एक ही त्रुटि है, और जब मैंने https के बजाय http का उपयोग शुरू किया तो मैंने हल किया। लेकिन जब मैं ब्राउजर में लिंक को https के साथ रखता हूं तो यह काम करता है! और मुझे एक सुरक्षित क्वेरी करने की ज़रूरत है। इस समस्या को हल करने के बारे में कोई विचार? – rsy

+5

@rsy जब आपने 'https के साथ लिंक रखा था' ब्राउज़र आपके लिए पोर्ट 443 में बदल गया होगा। आप वही कर सकते हैं। वास्तव में, यदि आप पोर्ट निर्दिष्ट नहीं करते हैं तो वास्तव में 'HttpURLConnection' आपके लिए यह कर देगा। – EJP

+0

यह सिर्फ एक कोशिश में काम किया। सही समाधान – MAC

13
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 

आप एक स्थानीय SMTP डोमेन नाम है कि मेल सर्वर से संपर्क करें और एक नया कनेक्शन स्थापित करता है और साथ ही आप नीचे दिए गए

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection 

props.put("mail.smtp.socketFactory.fallback", "true"); // Should be true 
+3

वह एचटीटीपीएस बोल रहा है, एसएमटीपी नहीं। -1 – EJP

+1

मेरे मामले में काम किया, धन्यवाद! javax.mail.MessagingException: SMTP होस्ट से कनेक्ट नहीं हो सका: मेल।livemusicgo.com, पोर्ट: 25; नेस्टेड अपवाद है: javax.net.ssl.SSLException: अपरिचित एसएसएल संदेश, सादा टेक्स्ट कनेक्शन? – surfealokesea

7

अपने प्रोग्रामिंग में एसएसएल संपत्ति बदलना चाहिए मैं एक ही त्रुटि मिली जाएगा होनी चाहिए संदेश जब मैं प्रॉक्सी के माध्यम से एक POST अनुरोध करने से पहले, कंपनी फ़ायरवॉल में लॉग इन करना भूल गया था।

+0

मुझे वही करना था हालांकि मैं कंपनी के अंदर था! – MonoThreaded

2

मुझे एक ही त्रुटि मिली। ऐसा इसलिए था क्योंकि मैं http का उपयोग कर https पोर्ट का उपयोग कर रहा था .. जब मैंने http को https में बदल दिया तो समस्या हल हो गई।

+3

नहीं, एचटीटीपीएस के माध्यम से HTTP पोर्ट तक पहुंचने पर आपको त्रुटि मिली। त्रुटि संदेश पढ़ें। आप एक सादे टेक्स्ट लक्ष्य से जुड़े हुए हैं। आपके द्वारा वर्णित स्थिति से एसएसईएलएक्सप्शन नहीं हुआ होगा, क्योंकि आप एसएसएल का उपयोग नहीं कर रहे थे। – EJP

-3

शायद आपका डिफ़ॉल्ट सर्किफेट समाप्त हो गया है। व्यवस्थापक कंसोल के माध्यम से इसे नवीनीकृत करने के लिए "सुरक्षा> SSL प्रमाणपत्र और कुंजी प्रबंधन> कुंजी स्टोर और प्रमाणपत्र> नोडडिफॉल्टकेस्टोर> व्यक्तिगत प्रमाणपत्र" "डिफ़ॉल्ट" उपनाम का चयन करें और फिर WAS को पुनरारंभ करने के बाद "नवीकरण" पर क्लिक करें।

+1

एक कालबाह्य प्रमाणपत्र इस अपवाद का कारण नहीं है। – EJP

1

मुझे जेडीईवीआर 11.1.1.7 आईडीई में निर्मित जावा एप्लिकेशन से एक ही समस्या का सामना करना पड़ता है। मैंने प्रॉक्सी फॉर्म प्रोजेक्ट गुणों के उपयोग को अनचेक करके इस मुद्दे को हल किया।

आप इसे निम्नलिखित में पा सकते हैं: प्रोजेक्ट गुण -> (बाएं पैनल से) रन/डीबग/प्रोफाइल -> दाएं पैनल से क्लिक करें (संपादित करें) -> बाएं पैनल से टूल सेटिंग -> अनचेक करें (उपयोग करें प्रॉक्सी) विकल्प।

-Dhttps.protocols = "TLSv1"

-3

आप जावा 6 पर कमांड लाइन से जावा प्रक्रिया चला रहे हैं या इससे पहले, इस स्विच को जोड़ने मेरे लिए ऊपर समस्या हल हो जाती कहा, यह एक गैर-https प्रोटोकॉल के कॉल के कारण दिखाया गया एक संदेश है। यदि आप सुनिश्चित हैं कि यह HTTPS है, तो अपनी बाईपास प्रॉक्सी सेटिंग्स जांचें, और यदि आपके webservice होस्ट url को बायपास प्रॉक्सी सूची

+0

नहीं, ऐसा नहीं हुआ। यह एक अलग समस्या हल हो गई। – EJP

0

पर मेरे लिए अभी काम किया है, तो मैंने अपने Google खाते की सेटिंग नीचे दी है:

 System.out.println("Start"); 
     final String username = "[email protected]"; 
     final String password = "************"; 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.port", "465"); 
     props.put("mail.transport.protocol", "smtp"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 

     Session session = Session.getInstance(props, 
        new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication(username, password); 
        } 
        }); 


     try { 
      Transport transport=session.getTransport(); 
      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]"));//formBean.getString("fromEmail") 
      message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("[email protected]")); 
      message.setSubject("subject");//formBean.getString(
      message.setText("mailBody"); 
      transport.connect(); 
      transport.send(message, InternetAddress.parse("[email protected]"));//(message); 

      System.out.println("Done"); 

     } catch (MessagingException e) { 
      System.out.println("e="+e); 
      e.printStackTrace(); 
      throw new RuntimeException(e); 

     } 

हालांकि मैं एसएसएल और TSL सक्षम किया है, एक ही पोस्ट के इस link में कार्यक्रम चलाते समय। मैं बहुत समय बिताता हूं लेकिन मुझे एहसास हुआ और यह लिंक मिला। और Google में 2 निम्नलिखित चरणों और नियंत्रण नियंत्रण किया।:

  • 2-चरणीय सत्यापन (पासवर्ड और OTP)

  • अक्षम कम सुरक्षित ऐप का उपयोग करने की अनुमति देने के लिए सक्षम करने से (कम सुरक्षित ऐप्स की अनुमति दें:। पर)

अब मैं उपर्युक्त प्रोग्राम का उपयोग कर मेल भेज सकता हूं।

+0

सवाल HTTPS के बारे में है। – EJP

0

इसे एक उत्तर के रूप में जोड़ना क्योंकि यह किसी के बाद में मदद कर सकता है।

मुझे त्रुटि को हल करने के लिए आईपीवी 4 स्टैक का उपयोग करने के लिए जेवीएम को मजबूर करना पड़ा। मेरा आवेदन कंपनी नेटवर्क के भीतर काम करने के लिए प्रयोग किया जाता था, लेकिन घर से कनेक्ट करते समय यह एक ही अपवाद देता था। कोई प्रॉक्सी शामिल नहीं है। जेवीएम तर्क -Djava.net.preferIPv4Stack=true और सभी https अनुरोध सामान्य रूप से व्यवहार कर रहे थे।

0

यदि कनेक्शन FTPS परीक्षा है:

FTPSClient ftpClient = नए FTPSClient (प्रोटोकॉल, झूठी);

प्रोटोकॉल = टीएलएस, एसएसएल और गलत = isIplicit है।

-1

एक अन्य कारण शायद "पहुंच से वंचित" हो सकता है, हो सकता है कि आप यूआरआई तक पहुंच न सकें और आंतरिक नेटवर्क पहुंच के लिए ब्लॉकिंग प्रतिक्रिया पृष्ठ प्राप्त कर सकें। यदि आप सुनिश्चित नहीं हैं कि आपके एप्लिकेशन ज़ोन को फ़ायरवॉल नियम की आवश्यकता है, तो आप टर्मिनल, कमांड लाइन से कनेक्ट करने का प्रयास करते हैं। जीएनयू/लिनक्स या यूनिक्स के लिए, आप इस आदेश की तरह चलाने की कोशिश कर सकते हैं और परिणाम को देखने के नियम या वास्तव में दूरदराज के पते को अवरुद्ध करने से आ रहा है: echo | nc -v yazilimcity.net 443

0

मामले में आप

चल रहे हैं
  • Cisco AnyConnect सुरक्षित गतिशीलता एजेंट
  • Cisco AnyConnect वेब सुरक्षा एजेंट

कोशिश सेवा (ओं) को रोकने के।

0

मुझे एक ही समस्या मिली और इसे सिस्टम गुणों में "proxyUser" और "proxyPassword" सेट करके हल किया गया।

System.setProperty("http.proxyUser", PROXY_USER); 
System.setProperty("http.proxyPassword", PROXY_PASSWORD); 
"proxyHost" और "proxyPort"

System.setProperty("http.proxyHost", PROXY_ADDRESS); 
System.setProperty("http.proxyPort", PROXY_PORT); 

आशा है कि यह काम करेगा के साथ

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