2012-11-20 3 views
5

私は、単純なHTTPS接続を作成し、応答平文接続

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

を返しています。これは、正常に動作し、私は200応答を受け取る(私はすべてのキーストアおよびトラストストアなどが定義されている)

私はその後、プロキシサーバは次のようになりコネクタがある

をhttps.proxyPort = 8443とhttps.proxyHost-ローカルホストを使用して、桟橋のサーバーを介して要求:

を下に私にエラーを与える210

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を接続しているときに例外が発生しています。これらのポート間でJETTYが復号化を行うかどうかは、例外が8080がプレーンテキストであるためです。

0

this questionとほぼ同じ問題です。

https.proxyPort=8443https.proxyHost=localhostを使用すると、クライアントとプロキシホスト/ポートの間の接続は、SSL/TLSを使用せずにプレーンテキストHTTPで行われます。クライアントは次に、ターゲットホスト名でCONNECT要求をプロキシに送信します(これは、この「プレーンテキスト」例外を取得する方法です)。

次に、プロキシがそのターゲットサーバに要求を行い、すべての未処理トラフィックを前後に中継するトンネルを確立します。クライアントの視点から(HttpsUrlConnection)、プロキシに接続されているソケットがSSL/TLSにアップグレードされます(つまり、ハンドシェイクが開始され、そのトンネル経由でターゲットサーバに中継されます)。

HTTPSを使用してクライアントとプロキシ自体の間の接続をサポートする多くのクライアント。攻撃者はホスト名とポートのみを見ることができるため、一般的にはあまり役に立ちません。