第七章 数据的安全传输和身份精选PPT.ppt

上传人:石*** 文档编号:49404300 上传时间:2022-10-08 格式:PPT 页数:47 大小:9.71MB
返回 下载 相关 举报
第七章 数据的安全传输和身份精选PPT.ppt_第1页
第1页 / 共47页
第七章 数据的安全传输和身份精选PPT.ppt_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《第七章 数据的安全传输和身份精选PPT.ppt》由会员分享,可在线阅读,更多相关《第七章 数据的安全传输和身份精选PPT.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第七章 数据的安全传输和身份第1页,本讲稿共47页本章要点n本章在前面介绍的加密和认证的基础上,介绍如何使用SSL协议加密TCP/IP数据流,并介绍基于SSL的、用于加密浏览器和WEB服务器之间通信的HTTPS协议。nSSL和HTTPS不仅可以加密通信,而且可以用于服务器和客户身份的验证。用户浏览器访问一个站点,需要确定这个站点确实是某个机构的(说不定黑客已经攻击了你使用的域名服务器,将你导向了黑客伪装的站点)。服务器在某些时候也可能需要确定用户是谁,以便决定是否向其提供信息。第2页,本讲稿共47页本章主要内容n编制SSL客户和服务器程序n编制HTTPS客户和服务器程序n设置服务器所使用的证书

2、n设置客户程序信任的证书n设置客户程序所使用的证书n设置服务器信任的证书第3页,本讲稿共47页最简单的TCP通信n使用JAVA的SOCKET编程客户向服务器传送一个字符串“Hi”n客户程序:Client2n服务器程序:Server2n抓数据包:得明文第4页,本讲稿共47页第5页,本讲稿共47页最简单的SSL通信n1、最简单的SSL服务器n例:编写一个最简单的SSL服务器程序,它接受客户程序建立连接,并以加密的方式向客户程序发送一串字符Hi.SSL服务器程序运行时需要指定密钥库,以便向客户程序证明自己的身份。可以通过编程指定密钥库和通过JAVA命令行选项两种方式指定密钥库。本例使用编程指定密钥库

3、。n例:java MySSLServern2、最简单的SSL客户程序n例:编写一个最简单的SSL客户程序,和服务器建立连接,接受其发来的字符串并自动对其进行解密。为了使客户程序能顺利地验证服务器提供的证书,应该把服务器使用的证书或其签发者的证书提供给客户程序。n例:java MySSLClientn抓包之后发现数据被加密,只能看见密文第6页,本讲稿共47页显示结果第7页,本讲稿共47页第8页,本讲稿共47页进一步设置信任关系n上例使用密钥库的证书是自签名的证书,本例的客户程序不是直接信任自签名证书,而是信任由CA机构颁发的证书,使用在第六章得到的密钥库文件lfkeystore2。n本例也演示了

4、通过JAVA命令选项来指定密钥库和密码n例:服务器MySSLServern使用JAVA命令选项来指定密钥库和密码nJava D.ssl.keyStore=lfkeystore2 D.ssl.keyStorePassword=wshr.ut MySSLServer2n客户端仍然使用java MySSLClient第9页,本讲稿共47页第10页,本讲稿共47页设置默认信任密钥库n本例使用默认信任密钥库指定客户程序信任哪些证书。nJAVA默认的信任密钥库是c:j2sdk1.4.0jrelibsecurity目录下的cacerts文件,使用J2SDK提供的keytool工具可以将客户信任的证书导入该密

5、钥库,则JAVA程序自动信任这些证书对应的CA签发的证书。n在默认信任数据库中已经存有一些著名CA的证书,如果服务器程序所使用的证书是这些CA签发的,则不需要修改默认信任数据库。n例:java MySSLClient2 n服务器使用java MySSLServer2第11页,本讲稿共47页n输入java MySSLClient2的运行结果第12页,本讲稿共47页n由于客户程序没有在程序中通过System.setProperty()方法,也没有在运行时通过java命令指明客户程序信任哪个密钥库中的证书,所以运行时将使用默认信任密钥库d:j2sdkjrelibsecuritycacerts检查客户

6、程序是否信任服务器程序提供的证书。第13页,本讲稿共47页使用keytool工具可以看一下默认密钥库信任哪些证书第14页,本讲稿共47页n如果服务器使用的证书是这些证书对应的私钥所签发的,则本实例的程序可以直接运行。由于我们使用的证书是CA“XU YINGXIAO”签发的,在默认密钥库中不存在其证书,因此需要将”XU YINGXIAO”的证书导入默认密钥库。第15页,本讲稿共47页再执行程序截图第16页,本讲稿共47页通过KeyStore对象选择密钥库n除了通过System.setProperty()方法或者JAVA命令选项指定密钥库及其密码外,还可以在程序中通过KeyStore对象指定密钥库

7、和密码。n在前面各小节的例子中,保护密钥库的密码和各个条目中保护私钥的密码必须相同,使用KeyStore对象指定密钥库及密钥时,两种密码可以不同n例:java MySSLServerKs第17页,本讲稿共47页第18页,本讲稿共47页扩展的SSL客户和服务器程序的例子n我们已经可以在客户机、服务器之间以加密方式交换信息,剩下的问题就是客户机和服务器程序在处理输入和输出时按照什么规则进行,这主要取决于具体应用的要求。n例:使用一个简单的规则编写客户机/服务器双向通信的程序,服务器按照不同的客户请求发送不同的文件到客户程序,客户程序根据服务器发来的标题的不同方式保存文件第19页,本讲稿共47页通信

8、规则的制定n服务器收到客户发来的信息后,如果发现是.html结尾,则向客户程序先发一串信息:Sending HTML,再发送一串HTML文本,发送完毕后发送Session Over字符串结束会话。如果发现是.gif,则向客户程序先发送一串信息:Sending GIF,再发送一个图片文件n客户机和服务器建立连接后,向服务器发送请求字符串,然后读取服务器反馈信息。若收到Sending HTML字符串则建立HTML为后缀的文件,若收到Sending GIF字符串则建立.gif为后缀的文件,然后继续读取服务器反馈信息,将读取的内容存入文件。n服务器:java MySSLServerRulen客户:ja

9、va MySSLClientRule http:/www/x.gif第20页,本讲稿共47页运行结果第21页,本讲稿共47页查看对方的证书等连接信息n客户或服务器在得到SOCKET类型的对象后,都可以查看所连接的对方的证书。n客户程序和服务器程序最终都是通过Socket对象获得输入/输出流而进行双向通信。通过Socket对象不仅可以得到输入/输出流,还可以得到SSLSession类型的对象,该对象描述了连接双方的关系,通过其方法可以获得连接双方的信息。n例:n服务器:java MySSLServerSessionn客户:java MySSLClientSession第22页,本讲稿共47页第2

10、3页,本讲稿共47页HTTPS客户及服务器程序n可以使用SSL加密HTTP流量的HTTPSnHTTP协议基本的规则是:服务器先读取浏览器发来的数据(类似“GET/test.html”的字符串),如果是GET请求,则根据请求的内容,向浏览器发送HTTP版本,MIME版本,数据类型,数据长度,一个空行以及数据内容等信息。浏览器只有接收到这样的信息,才认为HTTP协议执行正确,从而将后面发送的内容作为网页内容显示出来。第24页,本讲稿共47页最简单的HTTPS服务器程序nWEB服务器可以发送以下消息获得对页面的请求:n“HTTP/1.0 200 OK”n“MIME_version:1.0”n“Con

11、tent_Type:text/html”n“Content_Length:”+c.length()n“”nCn其中C中包含的是网页的内容n输入:java -D.ssl.keyStore=lfkeystore2 D.ssl.keyStorePassword=wshr.ut MyHTTPSServer第25页,本讲稿共47页第26页,本讲稿共47页n注意:https默认的端口号是443,若要用其他的端口号,必须在客户程序中给出。第27页,本讲稿共47页出现的警告信息第28页,本讲稿共47页出现警告的原因n因为证书中的名称是”Liu Fang“,而访问该站点时我们使用了127.0.0.1来访问这个站

12、点。如果创建证书时使用服务器的IP地址或者域名作为证书的名称,则该警告信息将不会出现。第29页,本讲稿共47页n要使用作为域名,必须进行域名解析,简单的域名解析可以使用hosts文件,hosts在c:windowssystem32driversetc,目录,只要加上n127.0.0.1 n执行批处理文件:comstore.batn启动服务器:njava D.ssl.keyStore=mycomstore D.ssl.keyStorePassword=wshr.ut MyHTTPSServer第30页,本讲稿共47页n在浏览器中输入https:/,将出现下图第31页,本讲稿共47页n但是由于证书

13、不是权威CA所签发的,所以仍然出现了【该安全证书由您没有选定信任的公司签发】的警告n处理:由信任的CA来签发证书保存在密钥库 mycomstore2 中,再输入https:/浏览时将直接看到网页,而不再出现警告框。服务器执行:java D.ssl.keyStore=mycomstore2 D.ssl.keyStorePassword=wshr.ut MyHTTPSServer第32页,本讲稿共47页最简单的HTTPS客户程序n该客户程序可以在加密和不加密的方式下进行n不加密的方式,输入:java HttpsClient http:/ my.html,这里将屏幕输出重定向到了网页my.html中

14、第33页,本讲稿共47页加密的方式n若使用签名3.2.1节的HTTPS服务器,输入nJava HttpsClient https:/,会出现出错信息,这是因为没有定义客户端信任的 密钥库n加密的方式,输入:java D.ssl.trustStore=clienttrust HttpsClient https:/127.0.0.1:1443(结果出错,因服务器证书是一域名作为名字的)第34页,本讲稿共47页出错信息第35页,本讲稿共47页第36页,本讲稿共47页n输入java D.ssl.trustStore=clienttrust HttpsClient https:/:1443n程序正常运行

15、。第37页,本讲稿共47页第38页,本讲稿共47页基于Socket的HTTPS客户程序n可以使用更底层的Socket类来设计客户程序。n获得Socket类型对象后,就可以和以前一样得到输入和输出流,不同的是输入和输出流要按照HTTP协议规定的方式进行通信。n例:java HttpsSocketClient 127.0.0.1第39页,本讲稿共47页第40页,本讲稿共47页传输实际文件n可以设计服务器向客户传输实际文件n思路:客户程序按照HTTP协议格式给出需要的文件,服务器接收后根据用户要求解析出文件路径和格式从而将文件发回给客户。n要解决的问题:n(1)如何获得文件名:n在浏览器输入http

16、s:/127.0.0.1/xx/yy.html 的字符串,服务器接收到的是”GET/xx/yy.html HTTP/1.1”,因此,文件的相对路径就在获得的字符串的第一和第二个空格之间。第41页,本讲稿共47页n(2)若在浏览器中的输入不带文件名,如输入为https:/127.0.0.1或https:/127.0.0.1/t/,怎么办?n解决:若发现输入内容为空字符串或以“/”结尾,加上默认的文件名如:index.htmln例:运行MyHTTPSServerFile.bat第42页,本讲稿共47页第43页,本讲稿共47页基于证书的客户身份验证n服务器也可以要求客户的身份经过验证。n例:输入:j

17、ava D.ssl.keyStore=lfkeystore2 D.ssl.keyStorePassword=wshr.ut MyHTTPSServerAuth第44页,本讲稿共47页编写客户程序连接需客户验证的HTTPS服务器n不使用浏览器,使用JAVA程序作为客户端n(1)使用简单的HTTPS客户程序做客户端n服务器用批处理文件:MyAuthServer.batn客户端用批处理文件:MyAuthClient.batn(2)使用基于Socket的客户端n服务器用批处理文件:MyAuthServer.batn客户端用批处理文件:MyAuthClient2.bat第45页,本讲稿共47页编写客户程序连接需客户验证的HTTPS服务器第46页,本讲稿共47页小结n本章介绍了基于SSL和HTTPS的数据加密传输,同时通过客户和服务器的数字证书,客户和服务器程序之间可以相互向对方表明自己的身份,实现程序之间的信任关系。n除了加密传输数据,应用程序在运行过程中往往需要访问用户的本地资源,下一章将介绍程序的安全运行。第47页,本讲稿共47页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁