1

I am trying to create a server using SSL but I keep getting the following error:

"Server aborted:javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled."

I am not sure if I am creating the certificates correctly. Here is my code. I am converting an old TCP Server to an SSL Server

// SSL Server import java.net.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.net.ServerSocketFactory; import javax.net.ssl.SSLServerSocketFactory; public class SSL_Server { public static void main(String[] args) { int port = 2018; ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault(); ServerSocket ssocket = null; System.out.println("SSL_Server started"); System.setProperty("javax.net.ssl.keyStore","mySrvKeystore"); System.setProperty("javax.net.ssl.keyStorePassword","123456"); final ExecutorService threadPool = Executors.newCachedThreadPool(); try { ssocket = ssocketFactory.createServerSocket(port); InetAddress myIP =InetAddress.getLocalHost(); System.out.println(myIP.getHostAddress()); while(true){ Socket aClient = ssocket.accept(); //create a new thread for every client threadPool.submit(new SSL_ClientHandler(aClient)); } } catch(Exception e) { System.err.println("Server aborted:" + e); } finally { try{ ssocket.close(); } catch (Exception e){ System.err.println("could not close connection properly" + e); } } System.out.println("connection was closed successfully"); } 

}

1
  • The "server aborted" part of the message is strictly your invention. The relevant part is the part you got from the exception. I strongly suggest you amend your title accordingly. Commented Mar 7, 2012 at 0:33

2 Answers 2

2
System.setProperty("javax.net.ssl. keyStore","mySrvKeystore"); System.setProperty("javax.net.ssl. keyStorePassword","123456"); ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault(); ServerSocket ssocket = null; System.out.println("SSL_Server started"); 
Sign up to request clarification or add additional context in comments.

Comments

1

You should set the properties that configure the default SSLContext (and thus the default SSLServerSocketFactory) before getting it, since it will configure it then.

System.setProperty("javax.net.ssl.keyStore","mySrvKeystore"); System.setProperty("javax.net.ssl.keyStorePassword","123456"); ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault(); ServerSocket ssocket = null; System.out.println("SSL_Server started"); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.