你好,我尝试使用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();

最佳答案

getSupportedCipherSuites()仅显示您的本地SSL实现可以支持的密码(无论是否启用);它不使用远程连接。因此,无论您的SSLSocket目标是什么,您的“调试”输出总会成功获得相同的结果。在尝试握手之前(或者如果尝试通过尝试读写流或访问SSL会话信息来强制握手),将不会打开远程连接。

您确定要建立与SSL服务器的出站TCP连接吗?您是否能够通过其他客户端(例如浏览器或OpenSSL命令行客户端)确认这一点?

07-24 09:32