JAVA中SSL证书认证通讯-Client
来源:互联网 发布:出售淘宝店铺 编辑:程序博客网 时间:2024/05/17 09:37
/********************************************************************
* 项目名称 :rochoc <p>
* 包名称 :rochoc.net.security <p>
* 文件名称 :SSLClient <p>
* 编写者 :LuckyStar <p>
* 编写日期 :2008-2-13 <p>
* 程序功能(类)描述 :安全通讯的客户端 <p>
*
* 程序变更日期 :
* 变更作者 :
* 变更说明 :
********************************************************************/
package rochoc.net.security;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import java.security.SecureRandom;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;
/**
* 类名:SSLClient <p>
* 类描述: 安全通讯的客户端<p>
* 编写者 :luoc<p>
* 编写日期 :2005-6-30<p>
* 主要public成员变量:<p>
* 主要public方法: <p>
**/
public class SSLClient
{
/**
*构造函数说明: <p>
*参数说明: <p>
**/
public SSLClient()
{
init();
}
/**
* 方法名称:init<p>
* 方法功能:初始化客户端Socket <p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-30
**/
public void init()
{
//server socket's ip and port
String host="localhost";
int port=2001;
//keystore path and password
String keyf="..//key//mystore";
String trustf="..//key//srvtrust";
String pass="123456";
//set up a connection
SSLSocketFactory ssf=null;
try
{
//init context
SSLContext ctx=SSLContext.getInstance("TLS");
KeyManagerFactory kmf=KeyManagerFactory.getInstance("SunX509");
TrustManagerFactory tmf=TrustManagerFactory.getInstance("SunX509");
KeyStore ks=KeyStore.getInstance("JKS");
KeyStore tks=KeyStore.getInstance("JKS");
//load keystore
ks.load(new FileInputStream(keyf),pass.toCharArray());
tks.load(new FileInputStream(trustf),pass.toCharArray());
kmf.init(ks,pass.toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(),tmf.getTrustManagers(),new SecureRandom());
System.out.println("load keystore success.");
ssf=ctx.getSocketFactory();
//create socket
socket=(SSLSocket)ssf.createSocket(host,port);
System.out.println("create socket success.");
//handshake
socket.startHandshake();
System.out.println("handshake success.");
}catch(Exception e)
{
System.out.println("establish connection error.");
e.printStackTrace();
return;
}
}
/**
* 方法名称:sendMessage<p>
* 方法功能:发送信息 <p>
* 参数说明:@param msg <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-30
**/
public void sendMessage(String msg)
{
try
{
OutputStream out=socket.getOutputStream();
InputStream in=socket.getInputStream();
//send message
System.out.println("send message:["+msg+"]");
out.write(msg.getBytes());
out.write(TranTool.DATA_END);
out.flush();
//receive message
byte [] buff=new byte[1024];
int len=0;
System.out.println("recv len:"+(len=in.read(buff)));
System.out.println("receive from srv:[");
System.out.print(new String(buff,0,len));
System.out.println("] receive end.");
}catch(IOException e)
{
e.printStackTrace();
}finally
{
try
{
socket.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
/*全局变量*/
SSLSocket socket=null;
//测试函数
public static void main(String args[])
{
SSLClient sc=new SSLClient();
String msg="Hello SSL Server.";
if(args.length==1)
{
msg=args[0];
}else
{
System.out.println("Useage:Please input the message you want to send.");
}
sc.sendMessage(msg);
}
}
- JAVA中SSL证书认证通讯-Client
- java Android Client客户端 SSL 证书 私钥 公钥 安全 双向认证 怎么解决?
- SSL使用windows证书库中证书实现双向认证
- SSL双向认证在应用中获取用户证书
- JAVA SSL SOCKET通信服务器端证书单向认证
- JAVA SSL SOCKET通信服务器端客户端证书双向认证
- java中 SSL认证和keystore使用
- java环境中配置SSL双向认证
- java中 SSL认证和keystore使用
- java中 SSL认证和keystore使用
- java代码实现证书生成客户端证书 实现ssl双向认证
- android SSL证书认证、SSL双向认证、https访问;
- Java SSL证书问题
- Java SSL 证书细节
- win+apache实现ssl的证书认证
- 更换SSL证书认证问题--代码版
- 更换SSL证书认证问题--配置版
- Tomcat生成https+ssl双向证书认证
- JavaScript事件列表
- UML视图
- IE与FireFox的兼容性问题
- 网络课设总结(三)——VC++应用技巧
- javascript - 网页窗口适应
- JAVA中SSL证书认证通讯-Client
- 杂记 05/07/2011
- 网络课设总结(四)——利用CAsyncSocket进行异步通信
- fatal error LNK1104: 无法打开文件“libboost_regex-vc80-mt-gd-1_46_1.lib”
- 警世名言(汇总贴)
- 我在design house的日子
- c#下的屏幕截图
- vs2008 编译 luaplus 静态库
- 网络课设总结(五)——利用CAsyncSocket进行异步通信