SSL编程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SSL编程

SSL通信 SSL编程使用客户机/服务器模式,二者之间的通信使用SSL协议进行加密。本节先通过最简单的程序介绍服务器和客户程序之间如何通过SSL进行加密通信。 1 SSL服务器 ★ 实例说明 本实例编写了一个最简单的SSL服务器程序,它接受客户程序建立连接,并以加密方式向客户程序发送一串字符Hi。 SSL服务器程序运行时需要指定密钥库,以便向客户程序证明自己的身份。本实例演示了通过编程指定密钥库和通过java命令选项指定密钥库的两种运行方式。 ★ 编程思路: SSL编程和基于Socket的编程类似,首先创建ServerSocket对象,传入端口号,然后执行ServerSocket对象的accept( )方法获取Socket类型的对象,并侦听端口以等待客户程序和服务器连接。最后通过Socket类型的对象获得输入和输出流,通过输入和输出流和客户程序进行通信。SSL编程和基于Socket的编程不同的地方在于其ServerSocket对象是通过一个特殊的对象:SSLServerSocketFactory类型的对象创建的,这样以后的输入和输出流将自动按照SSL协议指定的方法交换密钥并对数据进行加密。此外,需要指定包含证书的密钥库,以便客户程序确定SSL服务器是否可靠。 具体步骤如下: 设置密钥库及口令 System.setProperty(javax.net.ssl.keyStore, mykeystore); System.setProperty(javax.net.ssl.keyStorePassword, wshr.ut); 分析:通过System类的静态方法setProperty( )可以设置系统参数。方法的第一个参数是系统参数的名称,第二个参数是为系统参数设置的值。作为SSL服务器程序,主要需要设置两个系统参数:javax.net.ssl.keyStore指定密钥库的名称,javax.net.ssl.keyStorePassword指定密钥库的密码。 这里不妨使用5.1节得到的密钥库mykeystore,其密码为wshr.ut。密钥库中必须存放私钥和证书,此外为私钥设置的密码应该和密钥库的密码相同。程序将自动从密钥库中提取证书。 创建SSLServerSocketFactory类型的对象 SSLServerSocketFactory ssf= (SSLServerSocketFactory) SSLServerSocketFactory.getDefault( ); 分析:执行javax.net.ssl包中SSLServerSocketFactory类的静态方法getDefault( ),经过强制转换获得SSLServerSocketFactory类型的对象,后面将用它获取ServerSocket对象。 创建ServerSocket类型的对象 ServerSocket ss=ssf.createServerSocket(5432); 分析:执行上一步得到的SSLServerSocketFactory对象的createServerSocket( )方法获得ServerSocket类型的对象,方法参数中指定一个整数作为端口号,其值一般在1~ 65535之间,UNIX服务,临时使用的端口号可取1024~ 65535之间的整数。 一台计算机上往往会运行不同的服务程序提供不同的服务,这些程序应使用不同的端口号,这样,当服务器收到客户程序发来的请求时,通过端口号确定哪个服务器程序与之通信。 等待客户程序连接 Socket s=ss.accept( ); 分析:执行上一步得到的ServerSocket对象的accept( )方法,程序将在此处挂起,等待客户程序建立连接。该方法返回的Socket类型的对象可用于和客户程序之间的通信。 建立输出流 PrintStream out = new PrintStream(s.getOutputStream( )); out.println(Hi); 分析:执行上一步得到的Socket对象的getOutputStream( )方法可以得到输出流,通过该输出流发送的信息将加密传递给客户程序。这里不妨使用输出流创建PrintStream类型的对象,以便通过println( )语句向客户程序打印字符串。 如果服务器程序同时需要处理客户程序发来的字符串,可以再通过Socket对象的getInputStream( )方法得到输入流,从输入流读取的信息即客户发来的信息。 ★代码与分析: 完整代码如下: import java.net.*; import java.io.*; import javax.net.ssl.*; public class MySSLServer{

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档