mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andre de C. Rodrigues" <andre.rodrigue...@gmail.com>
Subject trouble working with SSL
Date Wed, 09 May 2007 21:27:26 GMT
I'm having some trouble making the echo example with SSL enabled work.
I'm getting an exception caused by "no cipher suites in common":



javax.net.ssl.SSLHandshakeException: Initial SSL handshake failed.
	at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:440)
	at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
	at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:54)
	at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
	at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:247)
	at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:307)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
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:555)
	at org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:330)
	at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:408)
	... 8 more




I've tried setting the enabled cipher suites:
sslsocket.setEnabledCipherSuites(new String[]
"SSL_RSA_EXPORT_WITH_RC4_40_MD5", "SSL_RSA_WITH_RC4_128_MD5"});

and

sslFilter.setEnabledCipherSuites(new String[] {        		
"SSL_RSA_WITH_RC4_128_MD5", "SSL_RSA_WITH_RC4_128_MD5"},

and then printing on System.out the
sslFilter.getEnabledCipherSuites();  array, and both the client and
server seem to support both ciphers. What am I doing wrong?

Thanks in advance,
Andre



PS: Here's the code for my addSSLSupport() method in the server app
and the client app:



// CLIENT APLICATION
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

public
class EchoClient {
    public
            static
    void
            main(String[] arstring) {
        try {
            SSLSocketFactory sslsocketfactory = (SSLSocketFactory)
SSLSocketFactory.getDefault();
            SSLSocket sslsocket = (SSLSocket)
sslsocketfactory.createSocket("localhost", 9999);
		sslsocket.setEnabledCipherSuites(new String[]
{"SSL_RSA_EXPORT_WITH_RC4_40_MD5", "SSL_RSA_WITH_RC4_128_MD5"});
		String[] suported = sslsocket.getSupportedCipherSuites();

		System.out.println("\n\n\n\n\n\n");

		for(int i=0; i<suported.length; i++) System.out.println("Supported
Cipher Suites: " + suported[i]);

            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();
        }
    }
}





//SERVER APLICATION
    private static void addSSLSupport( DefaultIoFilterChainBuilder chain )
        throws Exception
    {
        SSLFilter sslFilter =
            new SSLFilter( BogusSSLContextFactory.getInstance( true ) );
            sslFilter.setEnabledCipherSuites(new String[] {
            		"SSL_RSA_EXPORT_WITH_RC4_40_MD5", "SSL_RSA_WITH_RC4_128_MD5"
        		});

        String[] suported = sslFilter.getEnabledCipherSuites();
		System.out.println("\n\n\n\n\n\n");
		for(int i=0; i<suported.length; i++) System.out.println("Supported
Cipher Suites: " + suported[i]);
		System.out.println("\n\n\n\n\n\n");


        chain.addLast( "sslFilter", sslFilter );

        System.out.println( "SSL ON" );
    }

Mime
View raw message