Java安全套接字扩展的研究与应用

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:jfguo2008
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:从网络数据传输的安全性问题出发,研究了SSL运行机理和JSSE的框架及API,设计了一个应用JSSE建立安全连接的原型,并以实例验证其有效性。
  关键词:安全套接字层;Java安全套接字扩展;工厂模式
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
  
  1 SSL
  
  随着计算机网络的日益普及,如何保证数据在网络上安全传输已成为一项基础性技术。安全套接字层(Secure Sockets Layer, SSL)[1]由Netscape公司开发,是目前最具代表性,应用最为广泛的网络安全传输协议。它位于TCP/IP协议层与各种应用层协议之间,如图1所示:
  
  因此,SSL可以广泛地应用在各种形式的网络传输中。例如使用浏览器访问安全站点所用的HTTPS协议就是SSL对HTTP协议的封装。SSL分为两层协议,底层是SSL记录协议,提供基本的安全服务;高层是握手协议、修改密文协议和告警协议,用于处理应用程序凭证的交换和验证[2]。SSL基于数字证书技术建立安全传输信道,其过程大致如下:(1)客户端与服务器交换SSL版本号等初始信息;(2)客户端与服务器相互验证对方证书(客户端验证为可选);(3)利用对方证书共同产生会话密钥;(4)利用会话密钥对后续的数据进行加、解密。
  
  2 JSSE
  
  JSSE(Java Secure Socket Extension,Java安全套接字扩展)是SUN公司所开发的对SSL的参考实现。从J2SE v1.4版本开始,JSSE成为JDK的标准组件,并纳入了J2EE规范[3]。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术,可以在客户机和服务器之间建立起一条SSL安全数据传输链路。为了方便应用程序开发者的使用,JSSE提供了一个可扩充的框架和一组Java API,主要包括:
  (1)SSLSocketFactory和SSLServerSocketFactory:分别用来产生客户端和服务端的SSL套接字的工厂类。
  (2)SSLSocket和SSLServerSocket:分别是客户端和服务端的SSL套接字,它们是java.net.Socket的子类。一个Socket代表TCP双向通信连接的一个端点,SSLSocket和SSLServerSocket总是成对出现。
  (3)SSLSession:代表客户端与服务端的一次会话。它保存了会话期间的会话密钥,并提供相应的加、解密组件。
  (4)HandShakeCompletedListener:网络监听器,负责监听客户端与服务端之间的“握手”事件(HandShakeCompletedEvent对象)。
  (5)X509Certificate:客户端与服务端默认采用公钥体系的数字证书,即:X.509数字证书。X509Certificate对象提供了对X.509数字证书的访问机制。
  (6)KeyManager和KeyManagerFactory:创建、存储和管理证书的工厂类及证书管理器对象。在建立SSL安全连接时,客户端和服务端需分别产生自身的证书并发送到对方验证。
  (7)TrustManager和TrustManagerFactory:管理、验证通信对方的数字证书的工厂类及证书管理器对象,只有通过验证方可建立SSL安全连接。
  可以看出,在JSSE中广泛采用了“工厂模式”(Factory Method),从而使得JSSE框架具备了良好的扩展性。其他软件开发者或应用提供商可以在JSSE规范下自行开发面向特定应用的具体实现。在JDK发布包中,SUN公司提供了自己开发的默认实现:SunJSSE。
  
  3 建立安全连接
  
  基于JSSE在客户机与服务器之间建立SSL安全连接可以分为四步:①为客户机与服务器分别建立X.509数字证书,并相互信任;②建立服务端的SSLServerSocket,并启动;③建立客户端的SSLSocket,并启动;④数据通信。
  3.1 创建数字证书
  在Java中可采用KeyStore(密钥仓库)技术来创建和存储X.509数字证书。KeyStore中可以存储两类不同的项,密钥项(Key Entry)存储极为敏感的加密密钥信息,由JSSE中的密钥管理器类(KeyManager)管理;可信任证书项(Trusted Certificate Entry)存储另一个对象的公钥证书,由JSSE中的可信任证书管理器类(TrustManager)管理[4]。
  在Java中创建、存储、管理数字证书的方法有两种。一是通过keytool工具手工操作,实现简单,但操作繁琐,并且无法动态控制证书信息;二是通过JSSE的API,采用程序自动生成并动态管理。在本文所设计的安全连接原型中采用第二种方式,其关键过程如下:
  // 创建工厂对象.
  String alg=KeyManagerFactory.getDefaultAlgorithm();
  KeyManagerFactory kmf=KeyManagerFactory.getInstance(alg);
  // 动态创建KeyStore文件
  FileInputStream fis=new FileInputStream(keyStore);
  KeyStore ks=KeyStore.getInstance("jks");
  ks.load(new FileInputStream(keyStore), keyPwd.toCharArray());
  // 使用KeyStore初始化工厂对象
  kmFact.init(ks, keyPwd.toCharArray());
  // 创建证书对象数组
  KeyManager[] kms=kmf.getKeyManagers();
  实例中采用默认算法生成证书,也可根据需要选择其它的证书生成算法。可信任证书对象(TrustManager)的创建与此类似,不再赘述。
  3.2 建立服务端与客户端Socket
  当通信双方的证书创建后,可以用SSLSocketFactory和SSLServerSocketFactory分别创建客户端与服务端的Socket,验证对方证书并建立安全连接。
  首先创建服务端Socket:
  // 创建默认工厂对象
  SSLServerSocketFactory ssf=
  (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
  // 创建套接字对象
  SSLServerSocket serverSocket=(SSLServerSocket)ssf.createServerSocket(port);
  // 指定双向验证(可选)
  serverSocket.setNeedClientAuth(true);
  // 监听连接请求
  SSLSocket socket=(SSLSocket)serverSocket.accept();
  // 创建网络监听器 对客户端证书授权验证.
  HandshakeCompletedListener hcl=new MyHandshakeListener(ident);
  socket.addHandshakeCompletedListener(hcl);
  其中MyHandshakeListener是自定义的一个实现HandshakeCompletedListener的对象,负责实现SSL的握手协议,采用X.509证书对象(X509Certificate)验证通信对方的证书[5] [6] [7]。客户端Socket的建立与此类似,不再赘述。
  3.3 数据通信
  Socket建立后,客户端与服务端可通过流方式(Stream)传输数据,监听器在通信双方实时对数据进行加、解密,保证网络连路上数据的安全性。
  
  4 结束语
  
  由于TCP/IP网络的固有缺陷,通过网络传输数据存在很大的安全隐患。SSL协议基于数字证书为网络上通信双方建立了一条安全的传输信道。SUN公司提出的JSSE技术是SSL协议的具体实现,为软件开发者设计SSL应用提供了极大的便利。特别是JSSE基于工厂模式的架构,可方便地扩充各种个性化的SSL实现。
  本文简要阐述了SSL的运行机理,具体研究了JSSE的框架和各种API,并应用JSSE设计了客户端与服务端之间SSL连接的原型,通过实例运行验证了原型的正确性。接下来将继续研究在JSSE框架下面向各种特定应用的个性化SSL实现。
  
  参考文献:
  [1]Netscape Communication Corporation.SSL 3.0 Specification[EB/OL].Available at :http://wp.netscape.com/eng/ssl3/.
  [2]肖文凯,孙丽君,阮永良.基于JSSE的JDBC安全连接的研究与实现[J].计算机应用研究,2004,(2):111-114.
  [3]Sun Microsystems.Java Secure Socket Extension (JSSE) Reference Guide[EB/OL].Available at:http://java.sun.com/j2se/1.5.0/docs/guide/ security/ jsse/JSSERefGuide.html.
  [4]曾毅,袁时金,胡运发.电子政务安全支撑平台中的证书管理[J].计算机工程,2004,30(5):72-74.
  [5]杨明,孟凡荣.整合SSL协议的Java RMI的研究与设计[J].计算机工程与设计,2007,28(15):3601-3604.
  [6]陈垦,沈岳.JSSE在电子商务中的应用[J].湖南农业大学学报(自然科学版),2005,31(5):553-556.
  [7]Cay S Horstmann,Gary Cornell.陈昊鹏,王浩,姚建平,等,译.JAVA 2核心技术 卷II:高级特性[M].北京:机械出版社,2006.599-677.
其他文献
作为中华民族的“根”与“魂”,传统文化涉及的内容非常广泛,蕴含着广博的哲学思想和人文精神,也是我国古代道德教育的重要载体和形式。当下,发掘传统文化中丰富的德育资源,关注传统文化的德育价值,不仅能够提升人们的思想道德素质和文化软实力,还能够推动社会和谐发展,激发世代依存的道德情感,从而更好地构筑中国精神、中国价值、中國力量。陈守聪、王珍喜编著的《中国传统文化的价值与现代德育构建》一书基于对中华传统文
摘要:网络改变着我们得生活,越来越多的人都通过网络来观看电视节目,让人们有了更多的频道选择。在此基础上,各种基于P2P 流媒体播放软件层出不穷,本文将着重介绍P2P 流媒体技术,包括流媒体传输协议以及如何实时传送。最后简要介绍流媒体播放的实现架构。  关键词:P2P;流媒体;流式传输  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)15-2pppp-0c    Abs
摘要:在数据库开发时,编号问题是必须要考虑的问题。该文主要介绍了自动编号与手工编号的几种编号方法,通过具体实例讨论它们的生成方法、实现过程及优缺点。用户可以结合自己的实际需要来选择合适的编号方法。  关键词:编号方法;SQL Server;数据库  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)24-1109-04  Brief Analysis of Coding
他秉持“处处留心皆学问”的古训,对生活、对外界事物始终保持着新闻工作者长期养成的职业敏感,处处留心,事事留意,继而抓拍到了一些有趣味、有意境的人物和场景。  在人人都是“报道员”的新媒体时代,似乎只要有手机、相机,就可以拍拍照、摄摄影,其实这是一种误解。要知道,和其他艺术门类一样,摄影不仅仅是一项技术活。要想出一点“彩”,或者拍出佳作、力作,没有对生活的热爱和对技术的精益求精,没有对艺术的不懈追求
摘要:随着计算机网络的飞速发展,各企业及院校的网络已大量普及,虽然windows2000server被大多数网络中心作为各种服务端的操作系统,但linux也以其运行速度快、具有良好的代码开放性、适应性强、支持多用户多文件系统、各种网络服务如(FTP、WWW、Email)容易构建及维护等特点被广泛应用。文章通过对Linux和APACHE的介绍,就具体如何在Linux下构建WWW服务作了说明。  关键
摘要:随着互联网的发展,新技术层出不穷,基于ASP.NET平台的网站和应用越来越广泛,用户对网站的访问速度的要求也越来越高。网站的访问速度取决于很多因素,该文主要从网站的系统架构和性能优化两方面入手,结合实际经验,提出一些最佳技术实践和解决方案,供大家参考。  关键词:ASP.NET;网站架构;性能优化  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)24-1166-
剪纸 58cm×43cm 2015年  该作品以“寿”字“青松”“仙鹤”相结合,以传统草书技法与民族剪纸——刻纸技法为一体的表现手法,以“寿”字形似大山,其大山深处生长着苍劲的青松,飞跃着千姿百态的仙鹤为创作构思(共6只仙鹤——取之人生一个年轮,六六大顺之意),形成和谐自然的壮观景象,既展示了书法字体外形不变、又体现了剪纸——刻纸的阴刻、阳刻的表现技法。其人与自然和谐相处的意境,形成了一幅松鹤延年
摘要:随着多媒体教室的大量建设和投入使用,大学课堂教学的模式发生了很大的变化,电化或网络的多媒体教学成为教学的主要方式。尤其是U盘被广泛使用于教学和数据交流当中,当我们享受U盘所带来的方便时,U盘病毒也在悄悄利用系统的自动运行功能肆意传播,给教学工作带来了一定困难和影响。  关键词:U盘;病毒;解决方法  中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)15-20000
摘要:本文介绍了分布式入侵检测系统的重要性和现有分布式入侵检测系统的局限性,提出了一种基于数据融合和数据挖掘的分布式入侵检测系统模型(DIDSFM),叙述了数据融合和数据挖掘应用于分布式入侵系统的意义,并详细说明了系统的体系结构和工作原理。  关键词:入侵检测系统;数据融合;数据挖掘;分布式  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)24-1106-02  De
摘要:模式匹配算法是入侵防御系统中检测引擎的核心算法,模式匹配算法的效率决定了入侵防御系统的性能。本文对模式匹配算法进行了研究,重点分析了多模式匹配算法Wu-Manber算法,并针对Wu-Manber算法存在的不足,提出了Wu-Manber算法的改进算法。  关键词:入侵防御系统;多模式匹配;Wu-Manber算法  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)12