Cliente e servidor via socket SSL Erro

Prezados bom dia,

to implementando um servidor e cliente via socket SSL para transferir dados porem ta dando erro o servidor roda e o cliente tb quando o cliente tenta conectar
da um erro mas eu acho qu e do certificado… ja fucei na internet inteira tudo quanto e tipo de tutorial pra poder montar o que to querendo… mas acho que to fazendo errado…

estou especificadamenteo tentando enviar ObjectOutputStream e ObjectInputStream a conexao sem ser ssl eu consegui enviar e receber mas quando fui implementar um servidor ssl ai ja ta dando erro

segue o codigo do servidor e erro

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tupinamba.src.server;

import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

/**
 *
 * @author Saulobt
 */
public class SSLServerSocketImpl extends Server {

    private boolean ON_OFF = true;
    private int PORT_SSL = Integer.parseInt(br.com.tupinamba.src.util.PropertiesLoaderImpl.getValor("PORT_SSL"));
    private SSLServerSocketFactory serverSocketFactory;
    private SSLServerSocket serverSocket;
    private SSLContext context;
    private SSLSocketFactory factory;
    private SSLSocket socket;

    @Override
    public int getPORT() {
        return this.PORT_SSL;
    }

    @Override
    public void listening() {

        while (ON_OFF) {
            try {
                System.out.println("Aguardando Conexão !");
                System.out.println("Server listening...");
                System.out.println("Port: " + getPORT());
                                
                socket = (SSLSocket) serverSocket.accept();
                new NewResourceImplSSL(socket).start();


            } catch (IOException ex) {
                Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
                ex.printStackTrace();
            }
        }
    }

    @Override
    public void initcomponets() {
        try {
            /*String keystore = "mySRCKeystore";
            char keystorepass[] = "mypassword".toCharArray();
            char keypassword[] = "passwordmy".toCharArray();
            KeyStore ks = KeyStore.getInstance("JKS");
            ks.load(new FileInputStream(keystore), keystorepass);
            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
            kmf.init(ks, keypassword);
            context = SSLContext.getInstance("TLS");
            context = SSLContext.getInstance("SSLv3");
            context.init(kmf.getKeyManagers(), null, null);*/

            serverSocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
            serverSocket = (SSLServerSocket) serverSocketFactory.createServerSocket(PORT_SSL);



            listening();
       /* } catch (KeyStoreException ex) {
            Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
        } catch (CertificateException ex) {
            Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
        } catch (UnrecoverableKeyException ex) {
            Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
        } catch (KeyManagementException ex) {
            Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();*/
        } catch (IOException ex) {
            Logger.getLogger(ServerSocketImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
        }
    }

    @Override
    public void Start() {
        ON_OFF = true;
    }

    @Override
    public void Stop() {
        ON_OFF = false;
    }

    @Override
    public Socket getSocket() {
        return this.socket;
    }

}

devolvo assim meu recurso…

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tupinamba.src.server;

import br.com.tupinamba.src.core.Resource;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;

/**
 *
 * @author Saulobt
 */
public class NewResourceImplSSL extends Thread implements Resource {

    private SSLSocket sslsocket;
    //private final Socket socket;

    public NewResourceImplSSL(SSLSocket socket) {
        this.sslsocket = socket;
        //initComponet();
    }
 
    @Override
    public void run() {
        ObjectOutputStream out = null;
        ObjectInputStream in = null;
        try {
            //super.run();
            out = new ObjectOutputStream(sslsocket.getOutputStream());
            in = new ObjectInputStream(sslsocket.getInputStream());

            //devolve um linkedlist<clientes>
            List<Clientes> lista Pesquisa.getCleintes();

            out.writeObject(lista);
            out.close();
            in.close();
            sslsocket.close();
        } catch (IOException ex) {
            Logger.getLogger(NewResourceImplSSL.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                out.close();
            } catch (IOException ex) {
                Logger.getLogger(NewResourceImplSSL.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

   
    @Override
    public Object getResouceObject() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

quando executo e rodo o cliente da esse erro:

server:

Mai 23, 2012 10:49:18 AM br.com.tupinamba.src.server.NewResourceImplSSL run
Grave: null
javax.net.ssl.SSLHandshakeException: no cipher suites in common
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1868)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266)
	at sun.security.ssl.ServerHandshaker.chooseCipherSuite(ServerHandshaker.java:892)
	at sun.security.ssl.ServerHandshaker.clientHello(ServerHandshaker.java:620)
	at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:167)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:998)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294)
	at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:685)
	at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:111)
	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1857)
	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1766)
	at java.io.ObjectOutputStream.<init>(ObjectOutputStream.java:246)
	at br.com.tupinamba.src.server.NewResourceImplSSL.run(NewResourceImplSSL.java:45)

Exception in thread "Thread-0" java.lang.NullPointerException
	at br.com.tupinamba.src.server.NewResourceImplSSL.run(NewResourceImplSSL.java:59)

client:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
	at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1943)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1059)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294)
	at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:685)
	at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:111)
	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1857)
	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1766)
	at java.io.ObjectOutputStream.<init>(ObjectOutputStream.java:246)
	at br.com.tupinamba.src.client.SSLObjectResource.getResource(SSLObjectResource.java:65)
	at JFRecursos.getSSL(JFRecursos.java:181)
	at JFRecursos.jButton2ActionPerformed(JFRecursos.java:113)
	at JFRecursos.access$100(JFRecursos.java:20)
	at JFRecursos$2.actionPerformed(JFRecursos.java:65)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at br.com.tupinamba.src.client.SSLObjectResource.getResource(SSLObjectResource.java:82)
	at JFRecursos.getSSL(JFRecursos.java:181)
	at JFRecursos.jButton2ActionPerformed(JFRecursos.java:113)
	at JFRecursos.access$100(JFRecursos.java:20)
	at JFRecursos$2.actionPerformed(JFRecursos.java:65)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

eu to achando que nao to implementando o arquivo de certificado direito, no código do servidor ta comentado a parte que configura o certificado… extraido de varias pesquisa sovre implementação de ssl socket pois cada um dava um exemplo e incompleto… mas eu acho que ta faltando algo!

e gostaria de saber, só consigo rodar um socket ssl com um arquivo de certificado ou pode ser sem e a própria api se encarrega de criptografar od dados sem a checagem de assinaturas…

?

Bom dia Pessoal,

alguem que ja tenha implementado uso de socket SSL poderia me ajudar com meus codigos postado ai em cima, os materiais que tenho pesquisado na net não to conseguindo implementar como disse ai em cima da erro na hora de transmitir …

    SSLServerSocketFactory 
    SSLServerSocket 
    SSLContext 
    SSLSocketFactory 
    SSLSocket 

coisa simples mesmo… preciso somente de transmitir dados string

obrigado.