2012-11-20 12 views
5

मैं एक साधारण HTTPS कनेक्शन बनाने रहा हूँ और एक प्रतिक्रियाप्लेन कनेक्शन

URL google = new URL("https://www.google.com/"); 
HttpsURLConnection connection = (HttpsURLConnection)google.openConnection(); 
System.out.println("Response: " + connection.getResponseCode()); 

यह ठीक काम करता है और मैं एक 200 प्रतिक्रिया प्राप्त लौटने (मैं सभी keystores और truststores आदि को परिभाषित किया है)

मैं तो प्रॉक्सी https.proxyPort = 8443 और https.proxyHost-स्थानीय होस्ट का उपयोग कर

सर्वर कनेक्टर्स कि इस तरह दिखना है द्वारा एक जेट्टी सर्वर के माध्यम से अनुरोध:

Server server = new Server(); 
SelectChannelConnector connector0 = new SelectChannelConnector(); 
connector0.setPort(8080); 
SslSelectChannelConnector sslConnector = new SslSelectChannelConnector(); 
sslConnector.setPort(8443); 
SslContextFactory cf = sslConnector.getSslContextFactory(); 
cf.setKeyStorePath(keyStoreHome); 
cf.setKeyStorePassword(keyStorePassword); 
cf.setTrustStore(trustStoreHome); 
cf.setTrustStorePassword(trustStorePassword); 
cf.setCertAlias("jetty"); 
server.setConnectors(new Connector[] {connector0, sslConnector}); 
server.setHandler(new HelloHandler()); 
server.start(); 
server.join(); 

कौन सा मुझे नीचे त्रुटि देता है:

DEBUG: org.eclipse.jetty.io.nio - created [email protected]{l(/127.0.0.1:62348)<->r(/127.0.0.1:8443),d=false,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=0}-{[email protected] SSL NOT_HANDSHAKING i/o/u=-1/-1/-1 ishut=false oshut=false {[email protected],g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-14,l=0,c=0},r=0}} 
DEBUG: org.eclipse.jetty.io.nio.ssl - [Session-1, SSL_NULL_WITH_NULL_NULL] [email protected] SSL NOT_HANDSHAKING i/o/u=180/0/0 ishut=false oshut=false {[email protected],g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-14,l=0,c=0},r=0} NOT_HANDSHAKING filled=180/180 flushed=0/0 
DEBUG: org.eclipse.jetty.io.nio.ssl - [email protected]{l(/127.0.0.1:62348)<->r(/127.0.0.1:8443),d=true,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=0r}-{[email protected] SSL NEED_WRAP i/o/u=180/0/0 ishut=false oshut=false {[email protected],g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-14,l=0,c=0},r=0}} 
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
at com.sun.net.ssl.internal.ssl.EngineInputRecord.bytesInCompletePacket(EngineInputRecord.java:152) 
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:806) 
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:721) 
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:607) 
at org.eclipse.jetty.io.nio.SslConnection.unwrap(SslConnection.java:519) 
at org.eclipse.jetty.io.nio.SslConnection.process(SslConnection.java:354) 
at org.eclipse.jetty.io.nio.SslConnection.access$900(SslConnection.java:43) 
at org.eclipse.jetty.io.nio.SslConnection$SslEndPoint.fill(SslConnection.java:661) 
at org.eclipse.jetty.http.HttpParser.fill(HttpParser.java:1030) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:275) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) 
at org.eclipse.jetty.io.nio.SslConnection.handle(SslConnection.java:191) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:620) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) 
at java.lang.Thread.run(Thread.java:662) 
DEBUG: org.eclipse.jetty.io.nio.ChannelEndPoint - close [email protected]{l(/127.0.0.1:62348)<->r(/127.0.0.1:8443),d=true,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=0!}-{[email protected] SSL NEED_WRAP i/o/u=180/0/0 ishut=false oshut=false {[email protected],g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-14,l=0,c=0},r=0}} 
DEBUG: org.eclipse.jetty.http.HttpParser - 

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

किसी को भी मुझे बता सकते हैं क्या इस के साथ गलत हो सकता है?

उत्तर

0

यह देखकर अपवाद तब होता है जब प्रॉक्सी HTTP - 8080 और HTTPS - 8443 को कनेक्ट कर रहा है। क्या जेटी उन बंदरगाहों के बीच डिक्रिप्शन करता है क्योंकि अगर अपवाद 8080 सादे पाठ के बारे में नहीं है।

0

यह this question में समान समस्या है।

जब आप https.proxyPort=8443 और https.proxyHost=localhost का उपयोग करते हैं, तो आपके क्लाइंट और प्रॉक्सी होस्ट/पोर्ट के बीच कनेक्शन एसएसएल/टीएलएस का उपयोग नहीं किया जाता है, लेकिन सादे पाठ HTTP में किया जाता है। क्लाइंट प्रॉक्सी को CONNECT लक्ष्य होस्ट नाम के साथ अनुरोध भेजता है (और इस तरह आपको यह "सादा पाठ" अपवाद मिलता है)।

फिर, प्रॉक्सी उस लक्ष्य सर्वर से अनुरोध करता है और एक सुरंग स्थापित करता है जो सभी कच्चे यातायात को आगे और पीछे छोड़ देता है। क्लाइंट के दृष्टिकोण से (HttpsUrlConnection), प्रॉक्सी से जुड़ी सॉकेट को एसएसएल/टीएलएस में अपग्रेड किया गया है (यानी यह एक हैंडशेक शुरू करता है, जिसे उस सुरंग के माध्यम से लक्षित सर्वर पर रिले किया जाता है।

नहीं हैं कई क्लाइंट जो क्लाइंट और प्रॉक्सी के बीच कनेक्शन को HTTPS का उपयोग करते हुए भी समर्थन करते हैं। यह आम तौर पर बहुत उपयोगी नहीं होता है, क्योंकि हमलावर केवल होस्ट नाम और पोर्ट को देख सकता है।

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