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 回答