- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 数据的安全传输和身份验证-SSL和HTTPS编程 本章要点 本章在前面介绍的加密和认证的基础上,介绍如何使用SSL协议加密TCP/IP数据流,并介绍基于SSL的、用于加密浏览器和WEB服务器之间通信的HTTPS协议。 SSL和HTTPS不仅可以加密通信,而且可以用于服务器和客户身份的验证。用户浏览器访问一个站点,需要确定这个站点确实是某个机构的(说不定黑客已经攻击了你使用的域名服务器,将你导向了黑客伪装的站点)。服务器在某些时候也可能需要确定用户是谁,以便决定是否向其提供信息。 本章主要内容 编制SSL客户和服务器程序 编制HTTPS客户和服务器程序 设置服务器所使用的证书 设置客户程序信任的证书 设置客户程序所使用的证书 设置服务器信任的证书 最简单的TCP通信 使用JAVA的SOCKET编程客户向服务器传送一个字符串“Hi” 客户程序:Client2 服务器程序:Server2 抓数据包:得明文 最简单的SSL通信 1、最简单的SSL服务器 例:编写一个最简单的SSL服务器程序,它接受客户程序建立连接,并以加密的方式向客户程序发送一串字符Hi.SSL服务器程序运行时需要指定密钥库,以便向客户程序证明自己的身份。可以通过编程指定密钥库和通过JAVA命令行选项两种方式指定密钥库。本例使用编程指定密钥库。 例:java MySSLServer 2、最简单的SSL客户程序 例:编写一个最简单的SSL客户程序,和服务器建立连接,接受其发来的字符串并自动对其进行解密。为了使客户程序能顺利地验证服务器提供的证书,应该把服务器使用的证书或其签发者的证书提供给客户程序。 例:java MySSLClient 抓包之后发现数据被加密,只能看见密文 显示结果 进一步设置信任关系 上例使用密钥库的证书是自签名的证书,本例的客户程序不是直接信任自签名证书,而是信任由CA机构颁发的证书,使用在第六章得到的密钥库文件lfkeystore2。 本例也演示了通过JAVA命令选项来指定密钥库和密码 例:服务器MySSLServer 使用JAVA命令选项来指定密钥库和密码 Java –D.ssl.keyStore=lfkeystore2 –D.ssl.keyStorePassword=wshr.ut MySSLServer2 客户端仍然使用java MySSLClient 设置默认信任密钥库 本例使用默认信任密钥库指定客户程序信任哪些证书。 JAVA默认的信任密钥库是c:\j2sdk1.4.0\jre\lib\security目录下的cacerts文件,使用J2SDK提供的keytool工具可以将客户信任的证书导入该密钥库,则JAVA程序自动信任这些证书对应的CA签发的证书。 在默认信任数据库中已经存有一些著名CA的证书,如果服务器程序所使用的证书是这些CA签发的,则不需要修改默认信任数据库。 例:java MySSLClient2 服务器使用java MySSLServer2 输入java MySSLClient2的运行结果 由于客户程序没有在程序中通过System.setProperty()方法,也没有在运行时通过java命令指明客户程序信任哪个密钥库中的证书,所以运行时将使用默认信任密钥库d:\j2sdk\jre\lib\security\cacerts检查客户程序是否信任服务器程序提供的证书。 使用keytool工具可以看一下默认密钥库信任哪些证书 如果服务器使用的证书是这些证书对应的私钥所签发的,则本实例的程序可以直接运行。由于我们使用的证书是CA“XU YINGXIAO”签发的,在默认密钥库中不存在其证书,因此需要将”XU YINGXIAO”的证书导入默认密钥库。 再执行程序截图 通过KeyStore对象选择密钥库 除了通过System.setProperty()方法或者JAVA命令选项指定密钥库及其密码外,还可以在程序中通过KeyStore对象指定密钥库和密码。 在前面各小节的例子中,保护密钥库的密码和各个条目中保护私钥的密码必须相同,使用KeyStore对象指定密钥库及密钥时,两种密码可以不同 例:java MySSLServerKs 扩展的SSL客户和服务器程序的例子 我们已经可以在客户机、服务器之间以加密方式交换信息,剩下的问题就是客户机和服务器程序在处理输入和输出时按照什么规则进行,这主要取决于具体应用的要求。 例:使用一个简单的规则编写客户机/服务器双向通信的程序,服务器按照不同的客户请求发送不同的文件到客户程序,客户程序根据服务器发来的标题的不同方式保存文件 通信规则的制定 服务器收到客户发来的信息后,如果发现是.html结尾,则向客户程序先发一串信息:Sending HTML,再发送一串HTML文本,发送完毕后发送S
您可能关注的文档
最近下载
- T∕CHCA 002-2024 热喷涂稀土合金复合涂层钢筋.pdf
- 建设工程工程量清单计价规范.docx VIP
- 第39讲建筑工程费用定额的适用范围及应用一bak.pdf VIP
- B3201_T 1211-2024 既有公共建筑能效提升节能量核定技术规程.pdf VIP
- 安全仪表系统检验测试计划.docx VIP
- 2025年义务教育2022年版《道德与法治课程标准》真题试卷附参考答案.docx VIP
- 智能安防巡逻机器人解决方案.doc VIP
- 常州站车站行车工作细则.pdf VIP
- 专用设备的操作手册编写与用户培训考核试卷.docx VIP
- 工程造价咨询服务方案 第二章 工作流程及进度控制方案.docx VIP
文档评论(0)