你好,我尝试使用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命令行客户端)确认这一点?