首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java加密解密(3)浅谈基于SSL的Socket通信

2012-11-09 
Java加密解密(三)浅谈基于SSL的Socket通信浅谈基于SSL的Socket通信客户端认证服务器,即判断当前客户端连接

Java加密解密(三)浅谈基于SSL的Socket通信
浅谈基于SSL的Socket通信
       客户端认证服务器,即判断当前客户端连接的服务器是否可信
        当客户使用SSL向站点服务器发送请求时,服务器向客户端发送一个证书,客户使用已安装的证书,验证服务器身份,然后检查IP地址(主机名)与客户端连接的主机是否匹配。客户生成可以用来对话的私钥(称为会话密钥),然后用服务者的公钥对它进行加密并将它发送到服务者。服务者用自己的私钥解密,然后用该信息和客户端一样的私有会话密钥。通常在这个阶段使用RSA算法。
        随后,客户端和服务器端使用私有会话密钥和私钥算法(通常是RC4)进行通信。使用另一个密钥的消息认证码来确保消息的完整性。
        使用JSSE实现客户与服务器端安全通信的步骤如下:
        1. 建立服务器端密钥库,制作数字证书
        (a) 建立服务器端密钥库

public class TestSSLSocketClient {private static String path = "e:\\keytool\\sslclient.keystore";private static char[] password = "aaaaaaa".toCharArray();/** * @param args */public static void main(String[] args) {SSLContext context = null;try {KeyStore ts = KeyStore.getInstance("JKS");ts.load(new FileInputStream(path), password);TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");tmf.init(ts);TrustManager [] tm = tmf.getTrustManagers();context = SSLContext.getInstance("SSL");context.init(null, tm, null);} catch (...... e) {         //省略捕获的异常信息e.printStackTrace();} SSLSocketFactory ssf = context.getSocketFactory();try {SSLSocket ss = (SSLSocket) ssf.createSocket("localhost", 8000);System.out.println("客户端就绪。");ObjectInputStream br = new ObjectInputStream(ss.getInputStream());try {System.out.println(br.readObject());} catch (ClassNotFoundException e) {e.printStackTrace();}br.close();ss.close();System.out.println("客户端测试ok");} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

<<To Be Continued>>

热点排行