Listing 4: SSLClientSide.java (location: C:\j2sse\client\)
import java.net.*;
import java.io.*;
import javax.net.*;
import javax.net.ssl.*;
import java.security.*;
class contact_server{
SSLContext ClientContext=null; //the context
KeyStore ClientKS=null; //the SSLcert keystore
TrustManagerFactory ClientTMF=null; //the TrustManagerFactory factory
char[] ClientKeystorePassword="e1002qa2".toCharArray(); //keystore password
char[] ClientKeysPassword="e1002qa2".toCharArray(); //keys password
Socket SSLsocket=null; //client socket
PrintWriter out=null; //in stream
BufferedReader in=null; //out stream
InputStreamReader ISR=null;
String in_str=null;
String out_str=null;
BufferedReader message=null;
public contact_server(){}
void send_message()
{
//get a JKS KeyStore
try{
ClientKS=KeyStore.getInstance("JKS");
}catch(java.security.KeyStoreException e)
{System.out.println("Error:"+e.getMessage());}
//load the SSLcert keystore
try{
ClientKS.load(new FileInputStream("SSLcert"),ClientKeystorePassword);
}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());}
//create a TrustManagerFactory
try{
ClientTMF=TrustManagerFactory.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 above TrustManagerFactory
try{
ClientTMF.init(ClientKS);
}catch(java.security.KeyStoreException e)
{System.out.println("Error:"+e.getMessage());}
//create a SSLContext object
try{
ClientContext=SSLContext.getInstance("SSL");
}catch(java.security.NoSuchAlgorithmException e)
{System.out.println("Error:"+e.getMessage());}
//initialize the above SSLContext
try{
ClientContext.init(null,ClientTMF.getTrustManagers(), null);
}catch(java.security.KeyManagementException e)
{System.out.println("Error:"+e.getMessage());}
try{
SocketFactory ssf=ClientContext.getSocketFactory();
SSLsocket=(SSLSocket)ssf.createSocket("127.0.0.1",443);
}catch(IOException e)
{
System.out.println("Error:"+e.getMessage());
System.exit(1);
}
try{
out=new PrintWriter(SSLsocket.getOutputStream(),true);
ISR=new InputStreamReader(SSLsocket.getInputStream());
in=new BufferedReader(ISR);
while((in_str=in.readLine())!=null)
{
System.out.println("Server "+in_str);
message=new BufferedReader(new InputStreamReader(System.in));
System.out.flush();
System.out.print("Send:");
out_str=message.readLine();
if (out_str!=null)out.println(out_str);
else break;
}
System.out.println("Conection canceled...");
out.close();
in.close();
message.close();
SSLsocket.close();
System.exit(1);
}catch(IOException e)
{
System.out.println("Error:"+e.getMessage());
try{
out.close();
in.close();
message.close();
SSLsocket.close();
System.exit(1);
}catch(IOException ex)
{System.out.println("Error:"+ex.getMessage());}
}
}
}
public class SSLClientSide{
public static void main(String[] args){
contact_server t=new contact_server();
t.send_message();
}
}
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.
|