Problemas na socket SSl parte 2

Saudações programadores.

Após investigar na internet eu desnvolvi o seguinte codigo. 8)

CLIENTE:

[code]package socket_seguro_cliente;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
import java.security.Security;
import javax.net.ssl.SSLSocket;

import javax.net.ssl.SSLSocketFactory;

public class Main {

public static void main(String args[]) throws Exception {

System.setProperty("javax.net.ssl.trustStore", "c:\\cliente.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.trustStore", "c:\\cliente.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");//Aqui a senha deste certificado

System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "c:\\keystore.keystore");//Aqui vem o arquivo criado através do comando keytool no passo 3
System.setProperty("javax.net.ssl.trustStorePassword", "123456");//Aqui a senha deste keystore


SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();

SSLSocket socket = (SSLSocket) ssf.createSocket("localhost",9999);;

socket.setEnabledCipherSuites(socket.getEnabledCipherSuites());

socket.startHandshake();

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String x = in.readLine();
System.out.println(x);
in.close();

}
} [/code]

SERVIDOR

[code] package socket_seguro_servidor;

import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.Security;
import javax.net.ssl.SSLServerSocket;

import javax.net.ssl.SSLServerSocketFactory;

public class Main {
public static void main(String args[]) throws Exception {

System.setProperty("javax.net.ssl.trustStore", "c:\\servidor.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.trustStore", "c:\\servidor.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");//Aqui a senha deste certificado

System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "c:\\keystore.keystore");//Aqui vem o arquivo criado através do comando keytool no passo 3
System.setProperty("javax.net.ssl.trustStorePassword", "123456");//Aqui a senha deste keystore

SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();

SSLServerSocket servidorSSL = (SSLServerSocket) ssf.createServerSocket(9999);

servidorSSL.setEnabledCipherSuites(servidorSSL.getSupportedCipherSuites());

Socket s = servidorSSL.accept();


  
  PrintStream out = new PrintStream(s.getOutputStream());
  out.println("Hi");
  out.close();
  s.close();

}
} [/code]

O programa Servidor vai enviar uma mensagem “Hi” ao programa Cliente. No entanto ao executar os programas eu obtenho a seguinte excepcao.

run: Exception in thread "main" javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1682) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:932) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1139) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123) at socket_seguro_cliente.Main.main(Main.java:104) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)

Por favor quem souber alguma coisa sobre certificados ou sockets SSL em java , ou que ja tenha enfrentado um problema semelhante , eu agradecia imenso que me desse umas dicas ou me dissesse o que é que eu posso fazer para corrigir este problema. :roll:

Muito obrigado pela atenção e felicidades. :slight_smile: