你好我在使用SSLFactory
尝试连接到java时遇到此错误堆栈追踪:
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();
答案 0 :(得分:1)
getSupportedCipherSuites()
仅显示您的本地SSL实施可以支持哪些密码(无论它们是否已启用);它不使用远程连接。因此,无论SSLSocket
的目标是什么,您的“调试”输出始终会以相同的结果成功。在尝试握手之前(或者如果通过尝试读取或写入流来强制握手,或访问SSL会话信息),则不会打开远程连接。
您是否确信您正在进行的出站TCP连接是SSL服务器?您是否能够使用其他客户端(例如浏览器或OpenSSL命令行客户端)进行确认?