Jumat, 10 Agustus 2012

SSL in Java

Hari ini mau tulis tutorial ecek-ecek lah. Uda lama juga gak nulis setelah laptop keyboard rusak #curcol. Kemarin iseng - iseng bikin koneksi tapi dibungkus pake SSL. Gw jg baru sih dan lumayan rada sulit.
Yang pertama kita lakukan itu bikin keynya atau gak certificatnya. Untuk bikin key itu uda ada tool dari javanya sendiri. 
Ketik command :
keytool -genkey -keystore mykey -keyalg RSA
Setelah jalanin command ini, akan terbuat file "mykey". Isinya itu keystore yang uda digenerate pake keytool. Oh, ya dalam membuat key ini bisa diselipin option macem-macem ya. Tapi default gw cuma bikin itu doank.
Nah abis itu kita buat server dan clientnya. Berikut kodenya untuk server dan client.


Server ;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class EchoServer {
    public static void main(String[] arstring) {
       try {
          System.setProperty("javax.net.ssl.keyStore""mykey");
  System.setProperty("javax.net.ssl.keyStorePassword""123456");
  System.out.println("SSL Started");

          SSLServerSocketFactory sslserversocketfactory =
                    (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();

          SSLServerSocket sslserversocket =
                  (SSLServerSocket) sslserversocketfactory.createServerSocket(2018);

         SSLSocket sslsocket = (SSLSocket) sslserversocket.accept();
         InputStream inputstream = sslsocket.getInputStream();
         InputStreamReader inputstreamreader =
                   new InputStreamReader(inputstream);

         BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

          String string = null;
          while ((string = bufferedreader.readLine()) != null) {
              System.out.println(string);
              System.out.flush();
          }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

Client ;

import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

public class EchoClient {
    public static void main(String[] arstring) {
        try {
            System.setProperty("javax.net.ssl.trustStore", "mykey");
    System.setProperty("javax.net.ssl.trustStorePassword""123456");
 
            SSLSocketFactory sslsocketfactory =
                          (SSLSocketFactory) SSLSocketFactory.getDefault();
            SSLSocket sslsocket =
                          (SSLSocket) sslsocketfactory.createSocket("localhost", 2018);

            InputStream inputstream = System.in;
            InputStreamReader inputstreamreader =
                         new InputStreamReader(inputstream);

            BufferedReader bufferedreader =
                        new BufferedReader(inputstreamreader);

            OutputStream outputstream = sslsocket.getOutputStream();
            OutputStreamWriter outputstreamwriter =
                        new OutputStreamWriter(outputstream);

            BufferedWriter bufferedwriter = new BufferedWriter(outputstreamwriter);

            String string = null;
            while ((string = bufferedreader.readLine()) != null) {
                bufferedwriter.write(string + '\n');
                bufferedwriter.flush();
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}
    
Setelah itu nyalain (run) servernya, kalo sudah kebuka portnya. Nyalakan juga clientnya. Kemudian coba ketik apa aja di console run. Maka akan terlihat hasilnya.
Selamat mencoba ya :)
Kalau kurang jelas silahkan lihat di link ini.

0 komentar:

Posting Komentar