已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络安全程序设计课程实验报告专业班级: 学 号: 学生姓名: 实验题目:基于OpenSSL的安全聊天系统指导教师: 成绩评定: 1 实验选题基于OpenSSL的安全聊天系统 Windows或Linux平台均可 点到点模式 基于OpenSSL的安全套接字通信 客户端服务器双向认证 聊天记录本地加密存储,输入正确口令可查看2 系统设计2.1 开发环境操作系统 Windows XP 开发平台 VC+6.0 相关软件 OpenSSL ActivePerl2.2 系统结构设计2.2.1 系统结构2.2.1.1 系统框图图2.1 系统框图2.2.1.2 模块描述服务器客户端启动服务聊天聊天连接服务器图2.2 系统模块服务器端:1 启动服务。包括服务器端初始化,等待客户端的连接。2 聊天模块。客户端:1 连接服务器。包括客户端初始化,想服务器发起连接和证书认证2 聊天模块。2.2.1.3 系统运行服务器端:先启动服务,再开始聊天。客户端:先链接服务器,再开始聊天。2.2.2 模块接口2.2.2.1 模块关系矩阵启动服务聊天连接服务器Socket连接、SSL验证无聊天无Socket数据表2.1 模块关系矩阵2.2.2.2 接口描述服务器和客户端的启动服务和连接服务器的接口:Socket连接、SSL验证。其中Socket连接成功了,取值为1,才会继续验证SSL;SSL验证成功了,取值为1才会继续聊天;否则都不能继续聊天。服务器和客户端的聊天和聊天的接口:socket数据,聊天不需要连接或加解密,所以直接接收、发送、显示以便完成聊天功能。3 详细设计3.1 主要数据结构、参数定义SSL链接typedef struct descriptorintfd;/序号SSL*ssl;/SSL结构descriptor_t;3.2 重要算法说明1 证书验证函数int verify_callback_server(int ok, X509_STORE_CTX *ctx)验证通过返回1,否则返回0。2 启动服务线程函数void StartServer(void* void_parm)初始化windows socket;初始化sockaddr_in结构体,设置TCP协议和端口;绑定端口;侦听TCP连接3 接收连接线程函数void AcceptThreadProc( void* void_parm )接收客户端连接后,开启线程处理客户端事务即接收客户端消息。4 处理客户端事务线程函数,接收客户端消息voidclient( void* void_parmint )响应客户端的连接请求;接受客户端的数据;并发送到显示窗口。5 处理线程WM_CLIENT_MSG消息LRESULT CServerDlg:OnClientMsg(WPARAM wParam,LPARAM lParam)把接收到的消息显示到列表框中。6 向客户端发送消息void CServerDlg:OnSend() 遍续所有已经链接客户端,广播发送消息。7 链接服务器void CClientDlg:OnConnect() 输入服务器指定IP,向服务器发起连接8 连接服务器端并接收服务器消息的线程函数void ClientThreadProc(void* void_parm)初始化windows socket;初始化sockaddr_in结构体,设置TCP协议和端口;绑定端口;发起连接;证书验证。9 发送消息到服务器void CClientDlg:OnSend() 向服务器发送数据10 处理WM_CLIENT_MSG消息LRESULT CClientDlg:OnClientMsg(WPARAM wParam,LPARAM lParam) 把接收到的数据显示出来。11 断开链接void CClientDlg:OnDisconnect() 撤销此客户端的SSL,断开连接。3.3 详细设计图2.3 聊天系统双方的函数调用3.3.1.1 服务器的启动服务模块3.3.1.2 函数列表序号函数1BOOL CServerDlg:OnInitDialog()2void StartServer(void* void_parm)3void AcceptThreadProc( void* void_parm )4void client( void* void_parmint )表3.1 服务器启动服务的函数列表3.3.1.3 函数说明函数名BOOL CServerDlg:OnInitDialog()函数说明服务器初始化函数入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明BOOLTRUE初始化一定要完成,返回值一定是TRUE处理流程初始化OpenSSL环境;设置服务器证书;设置服务器私钥;检查服务器私钥和证书是否匹配;初始化客户端链接结构体数组函数名void StartServer(void* void_parm)函数说明启动服务器线程函数入口参数参数类型参数名称参数值范围参数说明Void指针void_parm无无返回值类型取值取值说明void处理流程初始化windows socket;初始化sockaddr_in结构体,设置TCP协议和端口;绑定端口;侦听TCP连接函数名void AcceptThreadProc( void* void_parm )函数说明接收连接线程函数入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明void处理流程接收客户端连接后,开启线程处理客户端事务即接收客户端消息。函数名voidclient( void* void_parmint )函数说明处理客户端事务线程函数,接收客户端消息入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明void处理流程响应客户端的连接请求;接受客户端的数据;并发送到显示窗口。3.3.2 客户端连接模块3.3.2.1 函数列表序号函数1BOOL CClientDlg:OnInitDialog()2void CClientDlg:OnConnect() 3void ClientThreadProc(void* void_parm)4void CClientDlg:OnDisconnect() 表3.2 客户端连接模块函数列表3.3.2.2 函数说明函数名BOOL CServerDlg:OnInitDialog()函数说明客户端初始化函数入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明BOOLTRUE初始化一定要完成,返回值一定是TRUE处理流程初始化OpenSSL环境;设置客户端证书;设置客户端私钥;检查客户端私钥和证书是否匹配。函数名void CClientDlg:OnConnect() 函数说明 连接服务器入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明无处理流程输入服务器指定IP,向服务器发起连接函数名void ClientThreadProc(void* void_parm)函数说明连接服务器端并接收服务器消息的线程函数入口参数参数类型参数名称参数值范围参数说明void指针void_parm无无返回值类型取值取值说明void处理流程响应客户端的连接请求;接受客户端的数据;并发送到显示窗口。函数名void CClientDlg:OnDisconnect() 函数说明 与服务器断开连接入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明无处理流程撤销此客户端的SSL,断开连接。3.3.3 聊天模块3.3.3.1 函数列表序号函数1LRESULT CServerDlg:OnClientMsg(WPARAM wParam,LPARAM lParam)2void CServerDlg:OnSend() 表3.3 服务器端聊天模块函数列表(客户端也是一样)3.3.3.2 函数说明函数名LRESULT CServerDlg:OnClientMsg(WPARAM wParam,LPARAM lParam)函数说明 处理线程WM_CLIENT_MSG消息,显示到列表框中入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明无处理流程把接收到的数据格式化显示在列表框中函数名void CServerDlg:OnSend() 函数说明 发送数据入口参数参数类型参数名称参数值范围参数说明无无无无返回值类型取值取值说明无处理流程向缓冲区写入数据,然后调用SSL发送出去4 运行结果4.1 OpenSSL安装和环境配置按以下的命令,在终端进行操作1 预先安装PERL组件ActivePerl-5.8.0.806-MSWin32-x86.rar和windows vc+6.0 开发工具;把ml.exe和cl.exe复制到C盘的system32中;2 openssl.0.9.8.tar.gz 解压到d:3 cd c:openssl-0.9.84 perl Configure VC-WIN325 msdo_ms6 nmake -f msntdll.mak编译过程中需要耐心等待,有些命令执行得有些慢。将openssl编译成功会生成C:openssl-0.9.8out32dll文件夹。这个文件夹里有一些动态链接文件,如libeay32.dll、ssleay.dll将会在编译server和client时用到。编译过程某一部分如图 4.1所示。图 4.1 nmake时的编译情况4.2 创建CA证书通过以上对OpenSSL的编译、安装、配置之后,就可以创建CA证书了。首先,在C盘中新建文件夹caroot,然后在这个文件夹下新建几个文件夹有private、certs、newcerts、crl。接着,在命令行提示符中打开caroot文件夹,再键入G:openssl-0.9.8openssl.exe,准备创建CA。创建证书在以前的数字鉴别中也用过,参考实验资料中的mingling.txt文档,在命令行提示符中逐句键入命令,按要求生成证书。其中CA中心的发布如图 所示。图 4.2 CA中心的发布4.3 创建server和client证书和以上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年小学二年级英语上学期词汇专项测试卷
- 初中体育心得500字
- 2025年职高综合模拟试题及答案
- 陕西省公务员2025年行测考试技巧指导卷
- 2025年初中生物上学期生物圈测试卷
- 2025年文字编排试题及答案详解
- 2025年肉牛养殖有关试题及答案
- 第六章 第1节质量 同步练习 八年级上册物理人教版
- 2025年初中英语上学期单元专项练习卷
- 个人简历模版(三页)带封面(可编辑)大学毕业生版
- 企业情绪管理培训课件
- 2025-2030中国橡胶性能检测行业发展方向及前景动态预测报告
- CJ/T 194-2014非接触式给水器具
- 皮肤病靶向治疗专家共识(2025版)解读课件
- 标准厂房项目消防安全突发事件应急预案
- 《放射诊疗许可讲解》课件
- 椎间孔镜手术护理
- 《数据统计与分析:大数据时代统计学课程教案》
- 医院装修整改合同范例
- 2025年广东广州市高三一模高考物理试卷试题
- 离婚不离家协议范本
评论
0/150
提交评论