

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C-S文档一、功能介绍 此C-S系统是由服务器端和客户端组成。服务器可设置监听的端口号、监听时客户端最大的等待数,如果服务器端有多个网卡,还可设置本服务器用哪个IP进行监听(不设置默认为任意本机IP)。客户端可通过IP和端口号连接到服务器,并可选择特定的文件将其发送到服务器,而服务器会创建新的目录将受到的文件进行保存。整个传输过程中,数据的传输中使用OpenSSL进行了加密。二、使用说明1、服务器将server.c,cacert.pem,privkey.pem文件放在任意一个目录,然后通过此命令进行编译:gcc Wall lssl server.c o server。会得到一个名为server
2、的目标文件。然后就可以运行服务器了,运行的格式为:./server+端口号+监听客户端的最大数量+本服务器使用的IP,如:./server 1234 1 192.168.1.101。也可以缺省输入,端口号的默认值是7838,监听客户端的最大数量默认为2,本服务器使用的IP默认为任意。服务器接收到的文件默认保存在 /newfile 目录下。2、客户端将client.c文件放在任意一个目录,然后通过此命令进行编译:gcc Wall lssl client.c o client。会得到一个名为client的目标文件。当服务器开始监听后,就可以通过运行client目标文件连接到服务器了,运行的格式为:
3、./client+服务器IP+端口号,如:./client 192.168.1.101 1234。如果此时服务器还未和其他客户端建立连接,那么连接成功;如果服务器已经和其他客户端建立了连接,并且服务器监听的客户端未达到最大值,那么客户端会等待;否则返回错误。当客户端成功连接到服务器后,可以看到中间使用的证书的各种信息,并提示输入需要上传到服务器的文件名及其具体路径,如输入:/wenmin/server.c。三、系统结构服务器 客户端SSL 库初始化 SSL 库初始化载入所有 SSL 算法 载入所有 SSL 算法载入所有 SSL 错误消息 载入所有 SSL 错误消息创建本次会话连接所使用的协议
4、创建本次会话连接所使用的协议申请SSL会话的环境 CTX 申请SSL会话的环境 CTX载入用户的数字证书 创建一个 socket 用于 tcp 通信载入用户私钥 初始化服务器端的地址和端口信息检查用户私钥是否正确 开启一个 socket 监听 等待客户端连上来 连接服务器基于 ctx 产生一个新的 SSL 基于 ctx 产生一个新的 SSL将连接用户的 socket 加入到 SSL 建立 SSL 连接 建立 SSL 连接接收数据并保存到/newfile 发送数据关闭 SSL 连接 关闭 SSL 连接释放 SSL 释放 SSL关闭 socket 关闭 socket关闭监听的 socket 释放
5、CTX 释放 CTX四、生成数字证书和密钥1、生成RSA密钥的方法:openssl genrsa -des3 -out privkey.pem 2048这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成:openssl genrsa -out privkey.pem 2048建议用2048位密钥,少于此可能会不安全或很快将不安全。2、生成证书:openssl req -new -key privkey.pem -out cert.csr这个命令将会生成一个证书请求,当然,用到了前面生成的密钥privkey.pem文件。这里将生成一个新的文
6、件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095。这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pem五、错误重现1、OpenSSL的初始化:我开始开了几分资料,它们有的没有写前面初始化的函数,有的写了初始化的函数,编译没出错,
7、但每次都得不到我要的结果。于是做了一下测试,发现ctx会话环境根本没创建成功。后面才发现初始化有3个函数都可以实现,但前面它们写的不能实现初始化的功能,也就是少了一步。正的初始化函数,任意选取一个即可:SSL_library_init(void);OpenSSL_add_ssl_algorithms();SSLeay_add_ssl_algorithms(); 2、由于我是希望将server.c,cacert.pem,privkey.pem 3个文件一起放在任意的一个目录下,所以需要获取当前目录路径。我用的是getcwd函数来获取的,然后将它加上“/cacert.pem”或“/privkey.
8、pem”就可以了。开始一直没注意错误,但当我偶然将这3个文件放到根目录下时却出现了错误。由于一直没注意这个地方,找了很久才发现。原来2个字符串变成了“/cacert.pem”和“/privkey.pem”,当然加载会出错。3、服务器端接收到了文件名了,后首先创建一个空文件,但每次运行程序后,第一次传的文件没问题,但后面创建文件的文件名发生了变化,我用的数组来保存文件名。后来发现是因为完成一次文件传输后,没有将保存文件名的数组清空。4、在接受文件的时候,接收普通txt文件没出现问题,但在接受exe或doc文件的时候,接收到的文件始终比原来的文件小。开始怀疑这些特殊的文件是不是不是用open和read这些函数来操作的。于是在没次数据传输的时候,我都会在服务器和客户端分别答应出send和receive的数据,发现没有问题。后来才发现原来是服务器端保存数据的时候出了问题。我开始用的wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新型医疗防护装备批发供应合作协议
- 2025年豪华车型租赁与汽车文化推广合作协议
- 士兵安置面试题目及答案
- 消防设施维护与定期检查表
- 时局问题申论题目及答案
- 小学信息技术课教学设计与实践案例
- 大型项目监理安全管理制度
- 物业滞纳金催收流程及法律风险防范
- 生产车间班组长工作职责及管理技巧
- 合同范本标准化建设
- 2025年专科药剂学试题及答案
- 2025南方航空“梦起航”航务联合培养招聘笔试历年参考题库附带答案详解
- 苏州离婚协议书模板(2025版)
- 《电工》国家职业技能鉴定教学计划及大纲
- 零星维修工程(技术标)
- 篮球投篮教学的课件
- 园林绿化施工现场组织协调方案与措施
- 中专生招生管理办法细则
- 江苏南京师范大学附属中学2024~2025学年高一下册6月期末考试数学试题学生卷
- 医院质控科服务质量职责
- 2025年物流无人机市场调研报告
评论
0/150
提交评论