Listing 3: SSLServerSide.java (location: C:\j2sse\server\)
import java.net.*;
import java.io.*;
import javax.net.*;
import javax.net.ssl.*;
import java.security.*;
class reply extends Thread{
Socket ClientSocket=null; //client socket
PrintWriter out=null; //out stream
BufferedReader in=null; //in stream
InputStreamReader ISR=null;
String in_str=null;
String out_str=null;
public reply(Socket s)
{
ClientSocket=s;
}
public void run()
{
try{
out=new PrintWriter(ClientSocket.getOutputStream(),true);
ISR=new InputStreamReader(ClientSocket.getInputStream());
in=new BufferedReader(ISR);
out.println("Hello, I'm a secure server...");
while((in_str=in.readLine())!=null)
{
if(in_str.equals("Bye!"))break;
System.out.println("Recive:"+in_str);
out_str=in_str;
if(out_str!=null)out.println(out_str);
}
out.close();
in.close();
ClientSocket.close();
}catch(IOException e)
{
System.out.println("Erorr"+e.getMessage());
try{
out.close();
in.close();
ClientSocket.close();
}catch(IOException ex)
{System.out.println("Error:"+ex.getMessage());}
}
}
}
public class SSLServerSide{
public static void main(String[] args)
{
ServerSocket SSL_server_soclu=null;
SSLContext ServerContext=null; //the context
KeyStore ServerKS=null; //the SSLcert keystore
KeyManagerFactory ServerKMF=null; //KeyManagerFactory factory
char[] ServerKeyStorePassword="e1002qa2".toCharArray(); //keystore password
char[] ServerKeysPassword="e1002qa2".toCharArray(); //keys password
//getting a JKS KeyStore
try{
ServerKS=KeyStore.getInstance("JKS");
}catch(java.security.KeyStoreException e)
{System.out.println("Error:"+e.getMessage());}
//loading the SSLCert keystore
try{
ServerKS.load(new FileInputStream("SSLcert"),ServerKeyStorePassword);
}catch(java.io.IOException e)
{System.out.println("Error:"+e.getMessage());
}catch(java.security.NoSuchAlgorithmException e)
{System.out.println("Error:"+e.getMessage());
}catch(java.security.cert.CertificateException e)
{System.out.println("Error:"+e.getMessage());}
//generate a KeyManagerFactory
try{
ServerKMF=KeyManagerFactory.getInstance("SunX509","SunJSSE");
}catch(java.security.NoSuchAlgorithmException e)
{System.out.println("Error:"+e.getMessage());
}catch(java.security.NoSuchProviderException e)
{System.out.println("Error:"+e.getMessage());}
//initialize the KeyManagerFactory from above
try{
ServerKMF.init(ServerKS,ServerKeysPassword);
}catch(java.security.KeyStoreException e)
{System.out.println("Error:"+e.getMessage());
}catch(java.security.NoSuchAlgorithmException e)
{System.out.println("Error:"+e.getMessage());
}catch(java.security.UnrecoverableKeyException e)
{System.out.println("Error:"+e.getMessage());}
//create the context
try{
ServerContext=SSLContext.getInstance("SSL");
}catch(java.security.NoSuchAlgorithmException e)
{System.out.println("Error:"+e.getMessage());}
//initialize the context from above
try{
ServerContext.init(ServerKMF.getKeyManagers(), null, null);
}catch(java.security.KeyManagementException e)
{System.out.println("Error:"+e.getMessage());}
try{
ServerSocketFactory SSL_server_fabrica=ServerContext.getServerSocketFactory();
SSL_server_soclu=SSL_server_fabrica.createServerSocket(443);
System.out.println("SSL Server ...");
while(true){
Socket SSLsocket=SSL_server_soclu.accept();
Thread t=new reply(SSLsocket);
t.start();
}
}catch(IOException e)
{System.out.println("Error:"+e.getMessage());}
}
}
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|