A

 Server:



import javax.net.ssl.*; import java.io.*; import java.security.*;

public class SSLServer {

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

    SSLContext ctx = SSLContext.getInstance("TLS");

    KeyStore ks = KeyStore.getInstance("JKS");

    ks.load(new FileInputStream("server_keystore.jks"), "password".toCharArray());

    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");

    kmf.init(ks, "password".toCharArray());

    ctx.init(kmf.getKeyManagers(), null, null);

    SSLSocket c = (SSLSocket) ((SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(12345)).accept();

    BufferedReader r = new BufferedReader(new InputStreamReader(c.getInputStream()));

    PrintWriter w = new PrintWriter(c.getOutputStream(), true);

    w.println("Ack: " + r.readLine());

    r.close(); w.close(); c.close();

  }

}



Client:



import javax.net.ssl.*; import java.io.*; import java.security.*;

public class SSLClient {

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

    SSLContext ctx = SSLContext.getInstance("TLS");

    KeyStore ts = KeyStore.getInstance("JKS");

    ts.load(new FileInputStream("client_truststore.jks"), "password".toCharArray());

    TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");

    tmf.init(ts); ctx.init(null, tmf.getTrustManagers(), null);

    SSLSocket s = (SSLSocket) ctx.getSocketFactory().createSocket("localhost", 12345);

    PrintWriter w = new PrintWriter(s.getOutputStream(), true);

    BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream()));

    w.println("Hello"); System.out.println(r.readLine());

    r.close(); w.close(); s.close();

  }

}

Comments