1

握手をしなければなりません。私は以下のコードでそれを行います。

アプレットでコードを実行していますが、サーバーに対して直接実行すると問題なく動作します。私が抱えている問題は、同じコードがプロキシ経由で実行されたときに発生します。トレース レベル 5 を有効にして Java コンソールを見ています。コード行「SSLSocket socket = (SSLSocket) factory.createSocket("www.theserver.com", 443);」の直後 実行すると、この行が Java コンソールに表示されます。「network: Connecting http://www.theserver.com:443 with proxy=DIRECT」この後、アプレットは動作を停止します。プロキシがポート 443 で http トラフィックを許可しないためだと思います。

http を使用して接続している理由と、https を使用して接続するにはどうすればよいか、誰か教えてもらえますか?

import javax.net.ssl.HandshakeCompletedEvent; 
import javax.net.ssl.HandshakeCompletedListener; 
import javax.net.ssl.SSLSocket; 
import javax.net.ssl.SSLSocketFactory; 

public class Handshake 
{ 

    class MyHandshakeListener implements HandshakeCompletedListener 
    { 

        public void handshakeCompleted(HandshakeCompletedEvent e) 
        { 
            System.out.println("Handshake succesful!"); 
            System.out.println("Using cipher suite: " + e.getCipherSuite()); 
        } 
    } 

    public void DoHandshake() 
    { 
        try 
        { 
            SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
            SSLSocket socket = (SSLSocket) factory.createSocket("www.theserver.com", 443); 
            String[] suites = socket.getSupportedCipherSuites(); 
            socket.setEnabledCipherSuites(suites); 
            socket.addHandshakeCompletedListener(new MyHandshakeListener()); 
            socket.startHandshake(); 
        } 
        catch (Exception e) 
        { 
            System.out.println(e); 
        } 

    } 
} 
4

1 に答える 1