Créer une application avec SSLSocket Java

Je souhaite créer une application utilisant SSLSocket : le client envoie une Ssortingng au serveur et le serveur met cette Ssortingng majuscule et le renvoie au client pour l’affichage.

SSLServer

 public class SSLServer { public static void main(Ssortingng args[]) throws Exception { try{ //Creaet a SSLServersocket SSLServerSocketFactory factory=(SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); SSLServerSocket sslserversocket=(SSLServerSocket) factory.createServerSocket(1234); //Tạo 1 đối tượng Socket từ serversocket để lắng nghe và chấp nhận kết nối từ client SSLSocket sslsocket=(SSLSocket) sslserversocket.accept(); //Tao cac luong de nhan va gui du lieu cua client DataInputStream is=new DataInputStream(sslsocket.getInputStream()); PrintStream os=new PrintStream(sslsocket.getOutputStream()); while(true) //khi dang ket noi voi client { //Doc du lieu den Ssortingng input=is.readUTF(); Ssortingng ketqua=input.toUpperCase(); //Du lieu tra ve os.println(ketqua); } } catch(IOException e) { System.out.print(e); } } } 

SSLClient

 public class SSLClient { public static void main(Ssortingng args[]) { try { //Mo 1 client socket den server voi so cong va dia chi xac dinh SSLSocketFactory factory=(SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket sslsocket=(SSLSocket) factory.createSocket("127.0.0.1",1234); //Tao luong nhan va gui du lieu len server DataOutputStream os=new DataOutputStream(sslsocket.getOutputStream()); DataInputStream is=new DataInputStream(sslsocket.getInputStream()); //Gui du lieu len server Ssortingng str="helloworld"; os.writeBytes(str); //Nhan du lieu da qua xu li tu server ve Ssortingng responseStr; if((responseStr=is.readUTF())!=null) { System.out.println(responseStr); } os.close(); is.close(); sslsocket.close(); } catch(UnknownHostException e) { System.out.println(e.getMessage()); } catch(IOException e) { System.out.println(e.getMessage()); } } } 

Lorsque vous exécutez SSLServer . Il affiche cette erreur:

 javax.net.ssl.SSLException: No available certificatee or key corresponds to the SSL cipher suites which are enabled 

J’ai des recherches et fais quelques façons mais .. Pouvez-vous m’aider.

Cela va générer un certificate:

 keytool -genkey -keystore yourKEYSTORE -keyalg RSA 

Entrez yourPASSWORD et démarrez votre serveur avec les informations de débogage ssl (placez yourKEYSTORE dans le répertoire avec SSLServer.class):

 java -Djavax.net.ssl.keyStore=yourKEYSTORE -Djavax.net.ssl.keyStorePassword=yourPASSWORD -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -Djavax.net.debug=ssl SSLServer 

Ensuite, démarrez votre client (mettez votre KEYSTORE dans le répertoire avec SSLClient.class):

 java -Djavax.net.ssl.trustStore=yourKEYSTORE -Djavax.net.ssl.trustStorePassword=yourPASSWORD SSLClient 

Vérifiez les certificates que vous avez installés. Assurez-vous qu’ils prennent en charge les suites de chiffrement que vous négociez.