0

こんにちはSSLFactoryを使用してJavaでSSLに接続しようとすると、このエラーが発生します

スタックトレース:

javax.net.ssl.SSLHandshakeException: invalid SSL record content type
at com.ibm.j9.jsse.SSLSocketImpl.completeHandshake(Unknown Source)
at com.ibm.j9.jsse.SSLSocketImpl.getInputStream(Unknown Source)

ハンドシェイク中のコードエラーは次のとおりです。

_socket = SocketFactory.getSslSocket( _socket, //Socket created before this call
                                       _address, //host that supports SSL
                                       _port.intValue() );

 SSLSocket tempSocket = (SSLSocket)_socket;

 String[] supportedCipherSuites = tempSocket.getSupportedCipherSuites();

 System.out.println( "Supported Cipher Suites:" );
 for( int i = 0; i < supportedCipherSuites.length; i++ )
 {
    System.out.println( supportedCipherSuites[i] );
 }     

 tempSocket.setUseClientMode( true );
 tempSocket.startHandshake();
4

1 に答える 1

1

getSupportedCipherSuites()ローカル SSL 実装がサポートできる暗号のみを表示します (それらが有効になっているかどうかに関係なく)。リモート接続は使用しません。したがって、「デバッグ」出力は、のターゲットに関係なく、常に同じ結果で成功しますSSLSocket。リモート接続は、ハンドシェイクを試行するまで開かれません (または、ストリームへの読み取りまたは書き込み、または SSL セッション情報へのアクセスを試みることによってハンドシェイクが強制されるまで)。

作成しているアウトバウンド TCP 接続が SSL サーバーに対するものであると確信していますか? ブラウザや OpenSSL コマンド ライン クライアントなど、別のクライアントでこれを確認できましたか?

于 2012-05-08T13:55:30.677 に答える