原理:SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。
运用:现今SSL安全协议广泛地用在Internet和Intranet的服务器产品和客户端产品中,用于安全地传送数据,集中到每个WEB服务器和浏览器中,例如SSL可以嵌入到Tomcat、IIS等服务器中,从而来保证来用户都可以与Web站点安全交流 。
本文主要以JAVA语言用SSL构建安全的Socket为例,讲述SSL在网络信息传输的运用。JSSE(Java Security Socket Extension,Java安全套接字扩展)是Sun为了解决在Internet上的安全通讯而推出的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,开发人员可以在客户机和服务器之间通过TCP/IP协议安全地传输数据。
Ø 密钥(证书)的制作----我们可以用JDK(J2SE 1.4或者更高版本)里自带得keytool工具来创建证书,使用如下命令创建证书(用你的证书别名代替命令中的
Ø 建立Socket服务端,得到一个SSLServerSocket对象,代码如下:
private static SSLServerSocket getServerSocket(int thePort) {
SSLServerSocket s = null;
String key = "key/SSLKey"; //要使用的证书路径
char keyStorePass[] = "123456789".toCharArray(); //证书密码
char keyPassword[] = "123456789".toCharArray(); //证书别称所使用的主要密码
KeyStore ks = KeyStore.getInstance("JKS"); //创建JKS密钥库
ks.load(new FileInputStream(key), keyStorePass);
//创建管理JKS密钥库的X.509密钥管理器
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, keyPassword);
SSLContext sslContext = SSLContext.getInstance("SSLv3");
sslContext.init(kmf.getKeyManagers(), null, null);
//根据上面配置的SSL上下文来产生SSLServerSocketFactory,与通常的产生方法不同
SSLServerSocketFactory factory = sslContext.getServerSocketFactory();
s = (SSLServerSocket) factory.createServerSocket(thePort);
return (s);
}
Ø 建立客户端,代码如下:
public void SSLClient(String HostIp,int hostPort) {
System.setProperty("javax.net.ssl.trustStore","key/SSLkey");
SSLSocketFactory factory=(SSLSocketFactory)SSLSocketFactory.getDefault();
Socket s=factory.createSocket(HostIp,hostPort));
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
out.println("你好!信息通过SSL加密了,呵呵!");
out.close();
s.close();
}
没有评论:
发表评论