毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc

上传人:仙人指路1688 文档编号:2397477 上传时间:2023-02-17 格式:DOC 页数:41 大小:1.09MB
返回 下载 相关 举报
毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc_第1页
第1页 / 共41页
毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc_第2页
第2页 / 共41页
毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc_第3页
第3页 / 共41页
毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc_第4页
第4页 / 共41页
毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于OpenSSL的安全Web服务器程序设计.doc(41页珍藏版)》请在三一办公上搜索。

1、信息工程学院本科毕业论文(2014届)题 目基于OpenSSL的安全Web服务器程序设计系计算机专 业网络工程班 级学 号学生姓名指导教师完成日期2013 年 12 月诚 信 承 诺我谨在此承诺:本人所写的毕业论文基于OpenSSL的安全Web服务器程序设计均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名):年 月 日摘 要当今社会,人们越来越习惯利用互联网工作和生活,互联网已经成为人们获取资料信息的主要来源。然而互联网上的数据很容易被第三方获取,读取其中内容,造成信息的泄漏。最近这几年,由于网络安全的问题造成损失事例越来越多,互

2、联网的网络安全问题逐渐引起人们的重视,因此,设计了许多TCP/IP框架下安全协议,如IPSEC、SSL等。本课题通过利用OpenSSL实现安全的Web服务器的安全功能。开发环境是采用Windows系统下VC6.0进行开发。使用的技术有:Socket编程、SSL协议、OpenSSL、多线程编程等。Web服务器的基本功能具体包括:监听客户端请求、响应客户端请求、对数据进行安全的传输。本课题主要研究以下内容:利用OpenSSL生成服务器端相应的证书;实现Web服务器的基本功能;通过SSL握手实现客户端与服务器数据安全传输;设计测试用例,证明设计的Web服务器能够保证信息的安全。关键字:网络安全;We

3、b 服务器 ;OpenSSL ;安全传输ABSTRACTIn todays society,more and more people use the Internet work and life, Internet has become the main source of people access to information.However, the data on the Internet is very easy to access by third parties, stealer can read the content caused by the leakage of info

4、rmation. In recent years , the problem of network security cause more and more loss, network security problems of the Internet has gradually attracted by peoples attention,so design a lot of security within the framework of the TCP/IP protocol.The issue implement the security features Web server thr

5、ough OpenSSL. Its development environment base on VC6.0 under the Windows system. Using technologies: Socket programming , SSL Protocol, OpenSSL, multithread programming and so on. The basic function of Web serve: listening ten client request and response it, secure transmission of the date between

6、client and server.This paper mainly studies the following contents: Using the OpenSSL to generate the certificate of server; Implement the basic function of the Web server;Achieve client and server security data transmission by SSL handshake; Design test cases,prove the design of the Web server can

7、ensure the security of information. Key words:Network security;Web server;OpenSSL;Secure transmission 目 录1 概述11.1研究背景与意义11.2网络安全问题研究动态11.3论文组织结构42 技术背景52.1开发语言52.2开发环境52.3使用技术介绍62.3.1套接字Socket62.3.2 SSL协议72.3.3 OpenSSL82.3.4 多线程93 系统总体设计113.1系统设计总体目标113.2系统功能设计113.3系统设计步骤144 系统详细设计与实现154.1在Windows环境

8、下安装OpenSSL库154.2编译环境设置164.3利用OpenSSL生成证书174.4系统功能实现194.4.1服务器控制台实现194.4.2初始化函数的实现204.4.3服务器并发功能实现204.4.4服务器监听功能实现214.4.5客户端功能实现224.4.6实现安全的传输功能234.4.7服务器处理请求功能实现244.4.8服务器系统流程图265 系统运行结果及测试275.1 服务器控制台运行结果与测试275.2 服务器测试286 结束语326.1存在不足326.2 前景展望32致 谢33参考文献341 概述1.1研究背景与意义近年来,随着计算机技术的快速发展,人们越来越习惯利用互联

9、网工作和生活,互联网已经成为人们获取资料信息的主要来源,是全新的信息传播媒体。虽然计算机网络的产生最初是出于军事目的,但是现在已经运用到我们生活的各个领域。对我们来说互联网现在不仅仅只是一个简单的查询系统,也不是单纯提供信息的一种方式,而是广泛应用在广泛应用在商业、金融、国防、娱乐等各个领域的工具,深刻地改变了传统的生产、经营、管理和生活方式,在二十一世纪形成了一种全新的生活方式。众所周知,互联网给人类的生活带来了巨大的方便,极大的提高了我们的生产效率。因此,随着时间的推移,整个社会表现出了对互联网越来越大的依赖性,也就是说我们的生产生活已经离不开互联网。然而,一切事物的存在都有双面性,互联网

10、在给我们带来巨大的好处的同时也给我们的社会信息安全带来严重的威胁。近几年来信息交互的不断增加,特别是网上购物、网上银行、电子商务的快速发展,互联网逐渐显示出了它的弊端存在严重的安全隐患。2011年,经不完全统计钓鱼网站造成经济损失超200亿元;美国联邦调查局发布报告称,“蠕虫”、“特洛伊木马”等病毒每年使美国各类机构损失约11亿美元;2013年,中国互联网络信息中心(CNNIC)和国家互联网应急中心(CNCERT)在京联合发布2009年中国网民网络信息安全状况调查系列报告,调查显示:2012年,52%的网民曾遭遇过网络安全事件。这些惊人的数字不得不引起我们对网络完全的重视。网络信息自身具有很多

11、不利于网络安全的特性,例如网络的互联性,共享性,开放性,网络操作系统的漏洞及自身设计缺陷等,目前的网络系统已经与当初设计的网络产生了翻天覆地的变化,并且在接下来的发展中,网络规模大小会不断增加,网络结构会变得更加复杂,以Internet为代表,从美国军方的专用网络发展到联系到全世界千万人的信息网络,当下利用高科技犯罪的案例越来越多,这些客观的变化使网络安全的问题逐渐上升到一个至关重要的地位。1.2网络安全问题研究动态网络安全从其本质上来讲就是计算机网络上的信息安全,网络安全具有完整性、保密性、可用性三个方面的特点,因此只要是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理

12、论都是网络安全的研究领域。网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。网络安全措施是指为保护网络免受侵害而采取的措施的总和。在我国,信息网络安全技术的研究和产品开发还处于起步阶段,网络系统和协议还存在很多问题,不够健全不够完善不够安全。计算机和网络技术具有的复杂性和多样性,使得计算机和网络安全成为一个需要持续更新和提高的领域。近几年来我国进行了大量的研究,但由于技术水平有限,开发的防火墙、安全网关、系统监测等产品还存在许多不足。目前我们采取的保护网络安全的方式主要有:(1) 网络加密技术 密码技术是网络安全最有效的技术

13、之一。网络信息的加密过程是由加密算法具体实施的,以很小的代价就能提供可靠的安全保护。据统计,到目前为止,已经公开发表的各种算法有将近300种。依照国际上的惯例,对加密算法有常见的以下两种分类标准:私钥加密算法与DES。 公钥加密算法与RSA。(2) 防火墙技术防火墙是指两个网络之间实现控制策略的系统,用来保护内部的网络不易受带来自Internet的侵害。防火墙无法防范黑客对口令的攻击,不能防止来自内部用户带来的威胁,也不能解决进入防火墙的数据带来的安全问题。(3) 防病毒技术防病毒软件可以有效的防止病毒的入侵,在进行查毒扫描的过程中,发现病毒后立即报警并隔离带毒文件,由网络管理员负责清除病毒。

14、(4) 入侵检测技术(IDS)入侵检测系统可以是一种安全软件也可以是硬件,能很好地弥补防火墙的不足,可以说是对防火墙不足的补充。IDS检测未授权对象针对系统的入侵企图或行为,自动对检测到的行为做出响应,在网络系统受到危害之前拦截和响应入侵,记录并报告检测过程结果。Internet是一个基于TCP/IP协议的网络,通过TCP/IP协议实现不同级别、不同厂商、不同操作系统的计算机通信。如今,TCP/IP已经成为网络世界中实使用的最广泛、最具有生命力的通信协议,并成为事实上的网络互联工业标准。由于TCP/IP各层提供的功能不同,面向各层提供的安全保证也不同,人们在协议的不同层次设计了相应的安全通信协

15、议,用来保证网络各个层次的安全,从而形成了各层安全通信协议构成的TCP/IP协议簇的安全架构,如图1-1。图 1-1 TCP/IP协议簇的安全架构数据链路层安全通信协议负责提供通过专业通信链路连接起的主机或路由器之间的安全保证,该层安全通信协议主要有PPTP、L2TP、PPP等,主要的优点是效率高,主要缺点是不通用,拓展性不强。网络层安全通信协议主要是解决网络层通信的安全问题,也就是解决IP协议的安全问题。目前,IPsec是最为主要的网络层安全通信协议,具有对网络层以上各层透明性好的优点,主要缺点是很难提供不可否认服务。传输层安全通信协议主要是实现传输层的安全通信,采用SSL和TLS等协议。传

16、输层的安全只可在端系统实现,可以提供基于进程对进程的安全通信,但它的主要缺点是需要对应用程序进行修改,提供安全的透明性不好。应用层安全通信协议主要是根据如电子邮件、电子交易等特定应用的安全需求及其特点而设计的安全协议,主要有S/MIME、PGP、SET、SNMP、S-HTTP等协议,其主要优点是可以更紧密地结合具体应用的安全需求和特点,提供针对性更强的安全功能和服务,但这个就造成了缺点的存在,它需要对每个应用都需要单独设计一套安全机制。在哪一层需要采用什么协议实现安全通信,需要综合考虑应用对安全保密的具体要求,每一层实现安全功能的特点以及其他有关因素。在现代人们获取信息、交互信息的最主要的方式

17、是采用浏览器实现的,因此本文基于传输层SSL协议利用OPENSSL库建立安全的web服务器来保证信息的安全。1.3论文组织结构本文一共分为六章:第一章 :概述。介绍了本课题的研究背景与意义,网络安全问题的研究动态,提出本文采用OpenSSL库建立安全的Web服务器来保证信息的安全。第二章 :技术背景。介绍了本系统设计的开发语言和环境,还介绍了Scoket套接字,SSL协议与SSL握手的过程,OpenSSL库以及多线程的相关概念。第三章 :系统总体设计。本章介绍了系统总体设计的目标,以及对系统需要实现的几个功能进行简单概括,然后对系统需要解决的问题进行了详细的分析,确定了一个实验步骤。第四章 :

18、系统详细设计与实现。本章首先介绍了OpenSSL安装、编译环境的设置与如何利用OpenSLL生成证书,然后介绍了系统各个功能模块的具体如何实现的。第五章 :系统运行结果及测试。演示控制台运行结果,对服务器的功能进行测试。第六章:结束语。从存在的不足与前景展望进行总结。2 技术背景2.1开发语言本设计采用C/C+语言来进行开发。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写

19、不依赖计算机硬件的应用程序。C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。1983年美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,来制定C语言标准。1989年C语言标准被批准,俗称ANSI C或C89标准。1994年,ISO修订了C语言的标准。1995年,ISO对C90做了一些修订。在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C继续在改进。1999年,ISO又对C语言标准进行修订,在基本保留原来C语言特征

20、的基础上,针对应该的需要,增加了一些功能,命名为ISO/IEC 9899:1999,俗称C99标准。2001年和2004年先后又进行了两次技术修正。2011年12月8日,ISO正式公布C语言新的国际标准,命名为ISO/IEC 9899:2011,俗称C11标准。C语言常用的编译软件有Microsoft Visual C+、Borland C+、Intel C+、gcc、clang、Watcom C+ 、Lccwin32 C Compiler 3.1、Microsoft C。2.2开发环境本设计采用Windows系统下VC6.0进行开发。VC6.0是微软推出的一款C+编译器,是一个功能强大的可视

21、化软件开发工具,是将“高级语言”翻译为“机器语言(低级语言)”的程序,可支持基于C语言,C+ 以及C+/CLI等编程语言的软件开发。1993年Microsoft公司推出Visual C+1.0,在这之后新版本不断问世,但是VC6.0是使用最多的版本,也是最经典的版本,最大的缺点是对于模版的支持比较差,同时对Win7系统的兼容性也较差。目前的最新版本是Microsoft Visual C+ 2010,对C+的支持更加全面稳定。Microsoft Visual C+ 6.0的三个主要部分:1. Developer Studio。一个集成开发环境包括编辑器、调试器以及程序向导AppWizard、类向

22、导Class Wizard等开发工具。2. MFC。一种应用程序框架,用于编写应用程序的一个框架和引擎 。3. Platform SDK。Platform SDK是以Microsoft C/C+编译器为核心,配合MASM辅以其他一些工具和文档资料。目前用于网络应用程序开发的工具开发环境有很多, 但是随着Visual C+ 网络开发功能的不断增强, 作为一种方便易用的前端开发工具在实际开发中被广泛使用。利用Visual C+ 可以开发出功能强大、访问速度快、应用广泛、占用资源较少的网络应用程序。Visual C+ + 6. 0 中包含了开发网络应用程序的全方位的支持, 提供了多种多样的编程技术,

23、 例如WinSock 类中的Csocket 类, 使用它能够大大简化网络通信程序的编写, 既可以设计客户应用程序, 又可以开发服务器应用程序。2.3使用技术介绍2.3.1套接字SocketSocket用于在两个的应用程序之间相互通信,Scoket是属于TCP/IP的上一层,在Windows系统中,Socket称为winsock。Socket最初由美国加州Berkley大学提出,为UNIX 操作系统开发的网络通信接口,它定义了两台计算机间的通信规范(也是一种编程规范)。Socket 在实际的计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket 接口的计算机通信。应用信息在网络上

24、的传输、接收都是通过Socket接口来实现的。在应用开发中就像文件句柄一样可以对Scoket句柄进行读写操作。套接字接口主要有3种类型:流式套接字、数据报套接字以及原始套接字。流式套接字是一种面向连接的服务,针对面向连接的TCP服务应用,实现了无差错无重复的顺序数据传输,无长度限制;数据报套接字接口定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不一定是可靠,应用于无连接的UDP服务应用;原始套接字允许对低层协议IP 或ICMP 直接访问,主要应用网络协议的测试。Socket 进行网络通信的工作原理:客户端方面,客户机先打开通信信道(申请一个套接字),并连接到服务器在主机

25、的保留端口,该端口对应服务器的TCP/ IP 进程;随后客户端向服务器发出请求报文,等待接收应答;当从服务器方收到最终应答结果,或不再发送请求时,关闭信道并终止客户机进程。服务器方面,服务器先打开通信信道(申请一个套接字),通知本地主机在某一端口接收客户机请求;然后服务器等待客户机的请求到达指定端口;一旦服务器接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路;服务器继续等待客户机请求,如果服务器不想响应客户机请求,则关闭服务器进程。2.3.2 SSL协议安全套接层协议(Secure Socket Layer,SSL)最初是由Net

26、scape公司于1994年设计的,主要目的就针对其所有的通信安全问题,包括Web、电子邮件及新闻通信提供一种单一的解决方案。因为他们当时所面临的问题只是Web通信,所以SSL就是为了满足Web通信的需要而设计的,也就是说SSL必须能够与Web所使用的主要协议超文本传输协议(HTTP)一起很好的工作。SSL协议第一个成熟版本是SSL2.0协议,基本上解决了Web通信协议的安全问题,之后微软公司对其进行修改发布了PCT(Private Communication Technology)协议并应用在IE中。1996年Netscape公司发布了SSL3.0,该版本发明了一种全新的规格描述语言,以及一种

27、全新的记录类型和数据编码,还弥补了加密算法套件反转攻击这个安全漏洞。SSL 3.0相比于SSL 2.0更加成熟稳定,因此很快成为事实上的工作标准。1997年,IETF基于SSL协议发布了传输层安全协议(Transport Layer Security,TLS)的Internet Draft。1999年,IEFT正式发布了关于TLS的RFC2246。TLS是在SSL 3.0的基础上提出的,最初版本是TLS 1.0,最新版本是2006年发布的TLS 1.1。SSL以对称的密码技术和公开密码技术相结合,可以实现以下三个通信目标:(1) 秘密性。SSL客户机和服务器之间传送的数据都经过了加密处理,网络

28、中的非法窃听者所获取的信息都将是密文信息。(2)完整性。SSL利用密码算法和散列函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器与客户机之间的信息受到破坏。(3)认证性。利用证书技术和可信第三方认证,可以让客户机和服务器相互识别对方的身份。为了验证证书持有者是其合法用户(而不是冒名用户),SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。SSL的连接分为两个阶段,即握手和数据传输阶段。握手阶段是对服务器认证并确立用于保护数据传输的加密密钥,握手必须在传输任何数据之前完成,一旦握手完成,数据就被分成一系列经过保护的记录

29、进行传输。SSL握手协议对SSL会话状态进行维护,当客户端和服务器首次通信时,双方通过握手协议,协商通信协议版本号、选择密码算法、互相认证、并使用公钥加密技术通过一系列的交换信息在客户端和服务器的之间生成共享秘密。SSL 握手协议包括以下四个步骤(图2-1):(1)发起阶段。客户向服务器方发送一个ClientHello消息,等待服务器响应;服务器方返回ServerHello消息。(2)服务器认证和密钥交换。服务器用Clientficate消息发送自己的证书;如果需要服务器可以发送服务器密钥交换信息,如果服务器是非匿名服务器,则他需要请求验证客户端证书。最后,服务器发送完成Hello完成信息。(

30、3)客户端认证和密钥交换。如果服务器请求了证书,则客户端发送证书信息,若不能提供合适的证书,发送无证书警报。再发送客户端密钥交换信息。(4)完成。客户端和服务器分别向对方发送Change_Cipher_Spec和Finished消息。 图2-1 SSL握手流程图SSL协议提供的服务主要有下面三个:(1)认证用户和服务器,确保数据发送到正确的客户机和服务器;(2)加密数据以防止数据中途被窃取;(3)维护数据的完整性,确保数据在传输过程中不被改变。2.3.3 OpenSSLOpenSSL是一个开放源代码的SSL协议的产品实现,是采用C语言实现的软件开发包,具有跨平台性能,能在多个操作系统平台应用。

31、OpenSSL 最早是由Eric A. Young 和 Tim J. Hudson于 1995 年开始编写这个具有巨大影响的软件包。1998 年,OpenSSL 项目组接管了 OpenSSL 的开发工作。OpenSSL最早发布于1998年,其前身是Eric Young和Tim Hudson开发的SSLeay库。到目前为止,OpenSSL的算法已经非常完善了,对SSL2.0、SSL3.0以及TLS1.0都支持。OpenSSL的源代码库可以从官网www.openssl.org免费下载和使用。由于OpenSSL采用C语言开发,具有良好的跨平台性能,可以在大部分主流的系统平台上使用,如UNIX、Lin

32、ux、Windows等,实现消息摘要、文件加密和解密、数字证书、数字签名和随机数字产生等功能,是解决信息的安全传输问题的强有力工具。在当今社会,OpenSSL已经广泛应用在许多类型的安全软件中,在我认为OpenSSL必将会在以后的发展中被更加广泛的应用。OpenSSL 整个软件包大致可以分成3 个主要的功能部分:密码算法库、SSL 协议库以及应用程序。OpenSSL目录结构是围绕这三个功能部分进行规划的,在OpenSSL根目录下面的文件包含OpenSSL各个平台下编译安装的说明文档以及编译安装的配置文件。在Windows平台下将OpenSSL编译成功后,会增加三个目录:inc32、out32d

33、ll、tmp32dll。inc32目录与include目录相似,存放的是Windows平台下使用OpenSSL进行编程需要包含的头文件。out32dll则存放了OpsnSSL编译成功后的可执行应用程序和、链接库LIB文件和动态DLL文件。tmp32dll则是在编译过程中存放OBJ等临时文件。密码算法库是OpenSSL基础部分,实现了目前大部分主流的密码算法和标准,提供常用的对称密码算法,如:DES,DES3,IDEA,RC5,blowfish,CAST等;非对称密码算法如RSA,DSA;信息摘要算法如MD5,SHA- 1,RIPEMD,MDC2等。OpenSSL的应用程序是基于OpenSSL的

34、密码算法库和SSL协议库写成,主要包括密钥生成证书管理、格式转换、数据加密和签名、SSL测试以及其他辅助配置功能。OpenSSL的应用程序提供了相对全面的功能,可以把应用程序当作OpenSSL的指令,讲应用程序按指令的性质进行归类可分为:对称密钥指令、非对称密钥指令、信息摘要和签名指令、SSL测试指令以及其他指令。2.3.4 多线程多线程是指操作系统支持在一个进程中执行多个进程的能力。多线程技术一般用于既要进行耗时的工作,又要保持对用户的输入响应的应用程序。线程与进程是两个不同的概念,线程是比进程更小的单位,进程是系统分配资源的单位,为线程的运行提供了一个运行环境,也可以认为进程是由一个线程或

35、多个线程组成的。进程可以看作是由一段可执行的程序,程序所需要的相关数据(变量、工作区、缓冲区等),程序执行的上下文环境三个部分组成。线程包括线程的执行状态(运行,就绪等),一个执行栈,线程的静态存储局部变量,未运行时保存的线程上下文环境。线程和进程的主要区别在于子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定.,线程的运行中需要使用计算机的内存资源和CPU。在计算机的编程概念中,一个基本概念就是要求能同时对多个任务加以控制,许多程序的设计都要求程序能够暂停手头的工作去处

36、理其他的问题,然后再返回主程序。最初程序员编写一些中断服务例程,主进程的暂停是通过硬件级的中断来实现的,但是这种程序很难移植,成本代价高。一个采用了多线程技术的应用程序可以更好地利用系统资源,其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。并且,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加容易解决。但是当两个线程同时运行,并且它们试图访问相同的资源时就会遇到一个资源共

37、享的问题,如两个线程不能同时把信息发送给一台打印机。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。3 系统总体设计3.1系统设计总体目标系统总体目标:(1) 服务器能时刻接受浏览器的请求,支持GET命令。(2) 实现数据的安全传输。建立安全的连接,在传输过程中的数据要进行加密,保证数据即使在传输过程中被截获也不会泄漏信息。(3) 服务器能够发送客户端请求的资源。讲客户端请求的资源准确发给客户端,不遗漏数据。需要解决的主要问题:(1)WEB服务功能的实现服务器需要监听某一指定的的端口,当客户端发出请求进行连接,需要对请求进行确认然后对客户端的请求进

38、行回复,支持Get命令。 (2)数据安全传输的实现难点是服务器端需要确定客户端的请求是安全的,以及如何共享密钥。首先客户端与服务器建立连接,服务器把公用密钥发送给客户端,客户端用从服务器得到的公用密钥对会话进行加密,加密后通过网络传递给服务器,服务器解密得到会话密钥,用共享的密钥加密通信,建立起安全的通信通道。(3)证书验证当证书用户收到一个证书的时候,需要对这个证书进行验证,包括证书的日期是否有效,证书的名称是否匹配,该证书是否值得信任,确定该证书是否已经被撤销。以及需要解决采用什么方式对该证书进行认证。(4) 需要设计测试用例对是否真的实现了安全通信进行验证,确认双方的通信是安全的。3.2

39、系统功能设计客户端的基本功能:(1) 发送请求的命令。本程序采用发送GET命令。(2) 与服务器建立安全的传输通道。利用SSL握手建立连接。(3) 正确读取显示服务器发送回来的资源。Web服务器的基本功能:(1)服务器能够监听某个端口,时刻接受浏览器的请求,支持GET命令,并且能通过多线程实现并发地执行多个客户端请求。(2)安全传输。建立安全的连接,在传输过程中的数据要进行加密,保证数据即使在传输过程中被截获也保证数据不会泄漏。若检测到客户端的请求是不安全的则服务器显示相应的提示信息。(3)服务器在检测到安全的客户端信息,则发送客户端请求的资源。将客户端请求的资源准确发给客户端,不遗漏数据。总

40、体功能结构如图3-1、3-2所示,包括客户端与服务器两个部分。客户端功能包括:发送请求连接,通过握手与服务器建立安全的连接通道,然后请求获取服务器的资源,当服务器返回某一资源时,正确读取。服务器的功能包括三个模块:监听443端口,获取客户端发送的连接请求;在获取连接之后查看连接类型;返回客户端请求的资源,传输结束后断开连接。图 3-1 客户端功能图 图3-2 服务器功能图消息的安全传输是本系统设计的主要目标,在建立安全的传输通道这一块,首先需要由客户端请求安全连接,服务器返回公开的加密密钥,客户端生成会话密钥,将此密钥用公钥加密后传输给服务器,服务器用公开密钥的非公开部分解密后得到会话密钥,此

41、后双方使用共享的会话密钥进行加密传输。并且在握手后,SSL加密和解密HTTPS请求和服务器响应中的所有信息应当包括:(1) 客户端请求URL;(2) 所有已提交表单的内容;(3) 访问权限信息;(4) 在客户端和服务器之间发送的所有数据。下图是客户端与服务器通信的框架设计图:图3-3 客户端与服务器间的通信3.3系统设计步骤1.安装OpenSSL库,设置编译环境。2.利用OpenSSL生成服务器端证书。3编写客户端程序,要求能发送请求信息,接收和显示收到回应内容的详细信息。4.编写安全的Web服务器,需要能够侦听某个端口,对客户端的连接请求进行处理,返回客户端请求的资源。5.调试与测试。设计测

42、试用例,对是否真的实现了安全的通信进行验证。4 系统详细设计与实现4.1在Windows环境下安装OpenSSL库OpenSSL库提供了完全的、免费的、SSL协议实现,支持SSL 2.0、SSL 3.0以及TLS 1.0等版本,并且能够工作于大部分主流的系统平台上,如UNIX、Linux、Windows等。OpenSSL库支持最常用的对称加密算法、公钥算法、消息摘要算法等,提供了命令行借口和编程API借口。OpenSSL源代码(openssl-0.9.8e.tar.gz)可从官方网站http:/wwww.openssl.0rg下载。还需要从官方网站安装步骤:(1) 安装好Perl和VC+6.0

43、,保证系统Path中存在必要的程序:ml.exe,cl.exe,link.exe,perl.exe等,运行perl.exe确保安装成功。(2) 运行“CMD”命令,进入到D:perleg 目录下 运行example.pl图 4-1 Perl 测试显示“HellofromActivePerl!”,表示Perl安装成功。(3) 在VC+6.0的安装目录下的VC98Bin执行VCVARS32,BAT命令初始化VC+6.0的环境变量。图 4-2 设置VC环境变量(4)进入OpenSSL所在目录进行如下操作:配置编译参数,对编译环境进行基本的配置:perlConfigureVC-WIN32生成配置文件命

44、令:msdo_ms编译OpenSSL库命令:nmake -f msntdll.mak 进行测试:nmake-fmsntdll.maktest图 4-3 OpenSSL 测试提示passedalltests,表示OpenSSL编译成功。成功编译OpenSSL库后,会在OpenSSL源码的解压目录下增加3个新的目录:inc32、out32dll、tmp32dll。Inc32目录与include目录相似,存放的是windows平台下使用OpenSSL进行编程需要包含的头文件。Out32dll则存放了OpsnSSL编译成功后的可执行应用程序和、链接库LIB文件和动态DLL文件。Tmp32dll则是在编

45、译过程中存放OBJ等临时文件。4.2编译环境设置在VC的Include files中增加OpenSSLinc32目录,在Libray files中增加openssl-0.9.8out32dll目录。其中,OpenSSL表示OpenSSL的安装目录。在源程序中需要加入如下代码,包含3个OpenSSL编程常用的头文件以及LIB库。#include#include#include#pragma comment#pragma comment4.3利用OpenSSL生成证书系统的认证证书验证机制如下图4-4所示系统的认证证书机制包括一个CA中心和通信双方的认证证书。首先建立一个CA中心,由它向通信双方直

46、接签发证书,通信双方将CA中心的证书作为可信CA证书,验证对方身份时,都使用由该CA签发的证书。如果对方使用的是由CA中心签发的证书,则通过查看证书中的身份信息来验证对方的合法性。图4-4 系统的认证证书验证机制Web服务器证书生成步骤:1. 新建工作目录,将openssl安装路径下的apps/CA.pl和apps/f文件复制到该目录下,启动控制台。执行命令 CA.pl -newca 生成CA工作所需的文件和文件夹。将openssl安装路径下的appsdemoCAserial文件复制到生成的demoCA文件夹下。2. 更改配置文件中的根目录dir= E:/cert/demoCA# Where everything is kept3. 设置根证书和对应的私钥执行命令:openssl req -new -x509 -keyout ca.key -out root.pem -config f 将生成的ca.key放到demoCA/private目录下,将root.pem放到demoCA目录下。图4-5 生成根证书和私钥3. 生成服务器证书私钥和证书请求文件执行命令:Openssl req -newkey rsa:2048 -out server.pem -keyout server.key -config f4.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号