java安全性编程实例

java安全性编程实例

ID:33642056

大小:343.00 KB

页数:72页

时间:2019-02-27

java安全性编程实例_第1页
java安全性编程实例_第2页
java安全性编程实例_第3页
java安全性编程实例_第4页
java安全性编程实例_第5页
资源描述:

《java安全性编程实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7章数据的安全传输和身份验证——SSL和HTTPS编程本章重点:本章在前面几章介绍的加密和认证技术的基础上,介绍如何使用SSL协议加密TCP/IP数据流,并介绍基于SSL的、用于加密浏览器和Web服务器之间通信的HTTPS协议。SSL和HTTPS不仅可以加密通信,而且可以用于服务器和客户身份的验证。用户浏览器访问一个站点,需要确定这个站点确实是某个机构的(说不定黑客已经攻击了你使用的域名服务器,将你导向了黑客伪装的一个站点)。服务器再某些时候也可能需要确定用户是谁,以便决定是否向其提供某类信息。本章对此作了介绍。本章主要内容:

2、l编制SSL客户和服务器程序l编制HTTPS客户和服务器程序l设置服务器所使用的证书l设置客户程序信任的证书l设置客户程序所使用的证书l设置服务器信任的证书7.1最简单的SSL通信SSL编程使用客户机/服务器模式,二者之间的通信使用SSL协议进行加密。本节先通过最简单的程序介绍服务器和客户程序之间如何通过SSL进行加密通信。2887.1.1最简单的SSL服务器★实例说明本实例编写了一个最简单的SSL服务器程序,它接受客户程序建立连接,并以加密方式向客户程序发送一串字符Hi。SSL服务器程序运行时需要指定密钥库,以便向客户程序证明

3、自己的身份。本实例演示了通过编程指定密钥库和通过java命令选项指定密钥库的两种运行方式。★编程思路:SSL编程和基于Socket的编程类似,首先创建ServerSocket对象,传入端口号,然后执行ServerSocket对象的accept()方法获取Socket类型的对象,并侦听端口以等待客户程序和服务器连接。最后通过Socket类型的对象获得输入和输出流,通过输入和输出流和客户程序进行通信。SSL编程和基于Socket的编程不同的地方在于其ServerSocket对象是通过一个特殊的对象:SSLServerSocketFa

4、ctory类型的对象创建的,这样以后的输入和输出流将自动按照SSL协议指定的方法交换密钥并对数据进行加密。此外,需要指定包含证书的密钥库,以便客户程序确定SSL服务器是否可靠。具体步骤如下:(1)设置密钥库及口令System.setProperty("javax.net.ssl.keyStore","mykeystore");System.setProperty("javax.net.ssl.keyStorePassword","wshr.ut");分析:通过System类的静态方法setProperty(288)可以设置系统参

5、数。方法的第一个参数是系统参数的名称,第二个参数是为系统参数设置的值。作为SSL服务器程序,主要需要设置两个系统参数:javax.net.ssl.keyStore指定密钥库的名称,javax.net.ssl.keyStorePassword指定密钥库的密码。这里不妨使用5.1节得到的密钥库mykeystore,其密码为wshr.ut。密钥库中必须存放私钥和证书,此外为私钥设置的密码应该和密钥库的密码相同。程序将自动从密钥库中提取证书。(1)创建SSLServerSocketFactory类型的对象SSLServerSocketF

6、actoryssf=(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();分析:执行javax.net.ssl包中SSLServerSocketFactory类的静态方法getDefault(),经过强制转换获得SSLServerSocketFactory类型的对象,后面将用它获取ServerSocket对象。(2)创建ServerSocket类型的对象ServerSocketss=ssf.createServerSocket(5432);分析:执行上一步得到的S

7、SLServerSocketFactory对象的createServerSocket()方法获得ServerSocket类型的对象,方法参数中指定一个整数作为端口号,其值一般在1~65535之间,其中1~1023一般用于知名的端口号或特定的UNIX服务,临时使用的端口号可取1024~65535之间的整数。一台计算机上往往会运行不同的服务程序提供不同的服务,这些程序应使用不同的端口号,这样,当服务器收到客户程序发来的请求时,通过端口号确定哪个服务器程序与之通信。(3)等待客户程序连接Sockets=ss.accept();分析:执

8、行上一步得到的ServerSocket对象的accept()方法,程序将在此处挂起,等待客户程序建立连接。该方法返回的Socket类型的对象可用于和客户程序之间的通信。288(1)建立输出流PrintStreamout=newPrintStream(s.getO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。