Hi Trustin,

   I'm using Mina 0.9.4.  When trying to run ConnectorTest.java I
have the following problem:  .Using port 1 for testing.
* Without localAddress
log4j:WARN No appenders could be found for logger
(ConnectorTest$EchoConnectorHandler).
log4j:WARN Please initialize the log4j system properly.
* With localAddress
.Using port 1 for testing.
* Without localAddress
javax.net.ssl.SSLHandshakeException: Initial SSL handshake failed.
        at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:421)
        at 
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:501)
        at 
org.apache.mina.common.support.AbstractIoFilterChain.access$5(AbstractIoFilterChain.java:495)
        at 
org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(AbstractIoFilterChain.java:787)
        at 
org.apache.mina.common.support.AbstractIoFilterChain$2.messageReceived(AbstractIoFilterChain.java:110)
        at 
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:501)
        at 
org.apache.mina.common.support.AbstractIoFilterChain.messageReceived(AbstractIoFilterChain.java:492)
        at 
org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:284)
        at 
org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:244)
        at 
org.apache.mina.transport.socket.nio.SocketIoProcessor.access$4(SocketIoProcessor.java:233)
        at 
org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:565)
Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common
        at com.sun.net.ssl.internal.ssl.Handshaker.checkThrown(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.checkTaskThrown(Unknown 
Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(Unknown 
Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(Unknown Source)
        at javax.net.ssl.SSLEngine.wrap(Unknown Source)
        at 
org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:518)
        at 
org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:291)
        at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:389)
        ... 10 more
Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(Unknown Source)
        at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
        at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
        at 
com.sun.net.ssl.internal.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source)
        at com.sun.net.ssl.internal.ssl.ServerHandshaker.clientHello(Unknown 
Source)
        at com.sun.net.ssl.internal.ssl.ServerHandshaker.processMessage(Unknown 
Source)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
        at com.sun.net.ssl.internal.ssl.Handshaker$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.net.ssl.internal.ssl.Handshaker$DelegatedTask.run(Unknown 
Source)
        at 
org.apache.mina.filter.support.SSLHandler.doTasks(SSLHandler.java:745)
        at 
org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:483)
        ... 12 more
javax.net.ssl.SSLHandshakeException: Initial SSL handshake failed.
        at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:421)
        at 
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:501)
        at 
org.apache.mina.common.support.AbstractIoFilterChain.access$5(AbstractIoFilterChain.java:495)
        at 
org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(AbstractIoFilterChain.java:787)
        at 
org.apache.mina.filter.ThreadPoolFilter.processEvent(ThreadPoolFilter.java:718)
        at 
org.apache.mina.filter.ThreadPoolFilter$Worker.processEvents(ThreadPoolFilter.java:475)
        at 
org.apache.mina.filter.ThreadPoolFilter$Worker.run(ThreadPoolFilter.java:429)
Caused by: javax.net.ssl.SSLException: Received fatal alert: handshake_failure
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.recvAlert(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readRecord(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(Unknown 
Source)
        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(Unknown Source)
        at javax.net.ssl.SSLEngine.unwrap(Unknown Source)
        at 
org.apache.mina.filter.support.SSLHandler.unwrapHandshake(SSLHandler.java:675)
        at 
org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:492)
        at 
org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:291)
        at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:389)
        ... 6 more


I also tried passing: -Djavax.net.ssl.trustStore=bogus.cert
-Djavax.net.ssl.trustStorePassword=boguspw when running the
ConnectorTest and -Djavax.net.ssl.keyStore=bogus.cert
-Djavax.net.ssl.keyStorePassword=boguspw   when running the EchoServer
example.

I have also upgraded my JCE or JSSE (forget which) to the unlimited
strength one as distributed on Sun's site for JDK 1.5.

Thanks for your assistance.


On 6/23/06, Trustin Lee <[EMAIL PROTECTED]> wrote:
Hello class acts,

On 6/23/06, class acts <[EMAIL PROTECTED]> wrote:
>
> Well, I've spent countless hours trying to get this to work.  I've
> managed to connect a client application with my server using
> SSLFilter, there doesn't seem to be any errors with connecting or
> sending data from the client to the server.  However, I ran into a
> strange problem that I think may have to do with filters.  It seems
> that my client application can send messages to the server without any
> problem, but as soon as the server sends messages back to the client,
> the server locks up (usually on the second message sent). Here is the
> stack trace:
>
> Thread [AnonymousIoService-6-4] (Suspended)
>
>         
ProtocolCodecFilter$ProtocolEncoderOutputImpl(SimpleProtocolEncoderOutput).write(ByteBuffer)
> line: 32
>         MyPacketEncoder.encode(IoSession, Object, ProtocolEncoderOutput)
> line: 104
>         ProtocolCodecFilter.filterWrite(IoFilter$NextFilter, IoSession,
> IoFilter$WriteRequest) line: 226
>
>         
SocketFilterChain(AbstractIoFilterChain).callPreviousFilterWrite(IoFilterChain$Entry,
> IoSession, IoFilter$WriteRequest) line: 583
>         AbstractIoFilterChain.access$7(AbstractIoFilterChain,
> IoFilterChain$Entry, IoSession, IoFilter$WriteRequest) line: 577
>         AbstractIoFilterChain$1.filterWrite(IoSession,
> IoFilter$WriteRequest) line: 799
>         AbstractIoFilterChain$3.filterWrite(IoFilter$NextFilter,
> IoSession,
> IoFilter$WriteRequest) line: 212
>
>         
SocketFilterChain(AbstractIoFilterChain).callPreviousFilterWrite(IoFilterChain$Entry,
> IoSession, IoFilter$WriteRequest) line: 583
>         SocketFilterChain(AbstractIoFilterChain).filterWrite(IoSession,
> IoFilter$WriteRequest) line: 574
>         SocketSessionImpl.write0(IoFilter$WriteRequest) line: 176
>         SocketSessionImpl(BaseIoSession).write(Object) line: 136
>         MyClient.write(String) line: 68
>         MyPacketHandler.sendAccountInfo(MyClient) line: 1081
>         MyPacketHandler.processPacket(MyClient, GenuFXPacket) line: 153
>         MyIoHandler.messageReceived(IoSession, Object) line: 79
>         AbstractIoFilterChain$3.messageReceived(IoFilter$NextFilter,
> IoSession, Object) line: 188
>
>         
SocketFilterChain(AbstractIoFilterChain).callNextMessageReceived(IoFilterChain$Entry,
> IoSession, Object) line: 501
>         AbstractIoFilterChain.access$5(AbstractIoFilterChain,
> IoFilterChain$Entry, IoSession, Object) line: 495
>         AbstractIoFilterChain$1.messageReceived(IoSession, Object) line:
> 787
>         ProtocolCodecFilter.messageReceived(IoFilter$NextFilter,
> IoSession,
> Object) line: 187
>
>         
SocketFilterChain(AbstractIoFilterChain).callNextMessageReceived(IoFilterChain$Entry,
> IoSession, Object) line: 501
>         AbstractIoFilterChain.access$5(AbstractIoFilterChain,
> IoFilterChain$Entry, IoSession, Object) line: 495
>         AbstractIoFilterChain$1.messageReceived(IoSession, Object) line:
> 787
>         SSLFilter.handleAppDataRead(IoFilter$NextFilter, SSLHandler) line:
> 623
>         SSLFilter.handleSSLData(IoFilter$NextFilter, SSLHandler) line: 601
>         SSLFilter.messageReceived(IoFilter$NextFilter, IoSession, Object)
> line: 392
>
>         
SocketFilterChain(AbstractIoFilterChain).callNextMessageReceived(IoFilterChain$Entry,
> IoSession, Object) line: 501
>         AbstractIoFilterChain.access$5(AbstractIoFilterChain,
> IoFilterChain$Entry, IoSession, Object) line: 495
>         AbstractIoFilterChain$1.messageReceived(IoSession, Object) line:
> 787
>         ThreadPoolFilter.processEvent(IoFilter$NextFilter, IoSession,
> ThreadPoolFilter$EventType, Object) line: 718
>         ThreadPoolFilter$Worker.processEvents(ThreadPoolFilter$SessionBuffer)
> line: 475
>         ThreadPoolFilter$Worker.run() line: 429
>
>
> So it seems that it's getting stuck on the Queue.push(Object) call.
> Afaik, there is no thread dead-locking, it's just sitting there.  The
> first message always goes out without any problem, but the second call
> to IoSession.write() fails.  The exact same code without the SSLFilter
> added, works 100% of the time without any problem.


I'm sorry to hear that you've spent a lot of time.  Can I know which version
of MINA you're using exactly first?

Also, to see if the same thing occurs in the example program
> EchoServer, I tried to write an EchoClient program that can connect to
> it.  I created the bogus.cert just like in the comments in the
> BogusSSLContextFactory class, I run the EchoServer but I get this
> stack trace in the server when the client connects:
>
> javax.net.ssl.SSLHandshakeException: Initial SSL handshake failed.
>         at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java
> :421)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived
> (AbstractIoFilterChain.java:501)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$5(
> AbstractIoFilterChain.java:495)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(
> AbstractIoFilterChain.java:787)
>         at org.apache.mina.filter.ThreadPoolFilter.processEvent(
> ThreadPoolFilter.java:718)
>         at org.apache.mina.filter.ThreadPoolFilter$Worker.processEvents(
> ThreadPoolFilter.java:475)
>         at org.apache.mina.filter.ThreadPoolFilter$Worker.run(
> ThreadPoolFilter.java:429)
> Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common
>         at com.sun.net.ssl.internal.ssl.Handshaker.checkThrown(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.SSLEngineImpl.checkTaskThrown(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(Unknown Source)
>         at javax.net.ssl.SSLEngine.wrap(Unknown Source)
>         at org.apache.mina.filter.support.SSLHandler.handshake(
> SSLHandler.java:518)
>         at org.apache.mina.filter.support.SSLHandler.messageReceived(
> SSLHandler.java:291)
>         at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java
> :389)
>         ... 6 more
> Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common
>         at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
>         at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
>         at com.sun.net.ssl.internal.ssl.ServerHandshaker.chooseCipherSuite
> (Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.ServerHandshaker.clientHello(Unknown
> Source)
>         at 
com.sun.net.ssl.internal.ssl.ServerHandshaker.processMessage(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown
> Source)
>         at com.sun.net.ssl.internal.ssl.Handshaker$1.run(Unknown Source)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at com.sun.net.ssl.internal.ssl.Handshaker$DelegatedTask.run(Unknown
> Source)
>         at org.apache.mina.filter.support.SSLHandler.doTasks(
> SSLHandler.java:745)
>         at org.apache.mina.filter.support.SSLHandler.handshake(
> SSLHandler.java:483)
>         ... 8 more
>
>
> I've attached the client code:
>
> import javax.net.ssl.SSLContext;
> import javax.net.ssl.SSLSocket;
>
> import ssl.BogusSSLContextFactory;
>
> import java.io.*;
>
> public class MinaEchoClient {
>
>         public static void main(String[] arstring) {
>                 try {
>                         SSLContext sc = BogusSSLContextFactory.getInstance(
> false );
>
>                         SSLSocket sslsocket = (SSLSocket)
> sc.getSocketFactory()
>                                         .createSocket("127.0.0.1", 8080);
>
>                         InputStream inputstream = System.in;
>                         InputStreamReader inputstreamreader = new
> InputStreamReader(
>                                         inputstream);
>                         BufferedReader bufferedreader = new
> BufferedReader(
>                                         inputstreamreader);
>
>                         OutputStream outputstream =
> sslsocket.getOutputStream();
>                         OutputStreamWriter outputstreamwriter = new
> OutputStreamWriter(
>                                         outputstream);
>                         BufferedWriter bufferedwriter = new
> BufferedWriter(
>                                         outputstreamwriter);
>
>                         String string = null;
>                         while ((string = bufferedreader.readLine()) !=
> null) {
>                                 bufferedwriter.write(string + '\n');
>                                 bufferedwriter.flush();
>                         }
>                 } catch (Exception exception) {
>                         exception.printStackTrace();
>                 }
>         }
> }


I don't know why, but please take a look at our ConnectorTest.java test case
which is included in examples package.  Is is working fine.

Trustin
--
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP key fingerprints:
* E167 E6AF E73A CBCE EE41  4A29 544D DE48 FE95 4E7E
* B693 628E 6047 4F8F CFA4  455E 1C62 A7DC 0255 ECA6


Reply via email to