2-1. 基于OpenSSL的传输子系统实现
一. 基本传输子系统程序设计
客户端可上传文件至服务器,或下载服务器上的文件
系统程序构架:
| 客户端 | 服务器 |
|
TCP建立连接 menu()-> 上传命令、下载命令 close(socket) |
TCP建立连接 handle()-> 根据命令响应 close(socket); |
主函数框架:
| 客户端 | 服务器 |
int main(int argc, char *args[]) int clink() |
int main() |
---------------------------------------------------------------------------------------
客户端操作菜单及服务器端命令响应:
| 客户端操作菜单 | 服务器端命令响应 |
void menu() |
按照客户端的合适进行设定 |
//case "1" 上传文件 5部曲 |
-------------------------------------------------------------------------------------------------------------------
二. OpenSSL加密系统
由于网络传输数据中,易被抓包软件截获。因此运用非对称加密方法(公钥、私钥、数字证书),文件内容+公钥 ->加密系统 ->私钥,方可解密文件。
a)公钥与私钥是配对时候用的;
b)私钥加密的文件同样用对应的公钥解密,而为了区分公钥(防止公钥被偷换,导致私密文件泄露),引入数字证书再加密。
c)数字证书有权威机构发放,包含公钥及持有人信息,无法丢失假冒;
![]() |
SSL协议处于应用层协议(HTTP/SMTP)与TCP/IP协议之间,可实现文件加密传输。开源套接字层密码库OpenSSL,包含SSL、密码算法、秘钥证书管理功能等。 |
-----------------------------------------------------------------------------------------------
移植OpenSSL库:
解压安装文件 -> 配置.config文件,修改交叉工具链arm-linux- -> 编译make,make install,即生成OpenSSL的库函数文件 .a、.so -> 置于/rootfs/lib/目录下,OK!
OpenSSL通讯模型:基于下列通讯模型优化原始传输子系统程序设计
| 客户端SSL模型 | 服务器端SSL模型 |
|
初始化SSL -> (创建套接字、连接服务器) -> 创建SSL -> 基于SSL收发数据 -> 关闭SSL -> (关闭套接字) |
初始化SSL -> 公钥私钥数字证书设置 -> (创建套接字、绑定、等待连接) -> 创建SSL -> 基于SSL收发数据 -> 关闭SSL -> (关闭套接字) |
基于SSL收发数据:将write (sockfd,~) ->SSL_write (ssl,~)、read (sockfd,~) ->SSL_read (ssl,~)即可!
再对应产生公钥、私钥:(全部置于服务器目录下)
# openssl genrsa -out privkey.pem 2048 ->私钥
# openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 ->对应产生的公钥
OpenSSL加密传输子系统程序设计完成,对应产生服务器加密所需的公钥与私钥,分别进行编译即可实现:对上传、下载服务器文件的加密传输。
2-1. 基于OpenSSL的传输子系统实现的更多相关文章
- 基于视频压缩的实时监控系统-sprint3采集端传输子系统设计
由于jpg本来就是编码压缩后的格式,所有无需重复编码 传输子系统步骤:(1)初始化:a.socket(初始化tcp连接):b.将事件添加到epoll中 (2)事件处理:接收到网络包.发送完网络包 st ...
- 网络安全传输系统-sprint1传输子系统
一.产品规划与设计 二.传输子系统 基本框架:(1)不带安全功能的传输系统 (2)安全加密功能 part1:基本传输子程序设计(不带安全加密功能) 客户端 服务器 int main(int argc, ...
- 基于OpenSSL自建CA和颁发SSL证书
关于SSL/TLS介绍见文章 SSL/TLS原理详解.关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 . openssl是一个开源程序的套件.这个套件有三个 ...
- 基于OpenSSL的PKI的PKI数字证书系统实现
本篇主要介绍了基于OpenSSL的PKI的PKI数字证书系统实现,利用OpenSSL建立一个CA中心的详细解决方案和建立的具体步骤. 1.PKI数字证书系统设计 PKI数字证书系统主要包括证书颁发机构 ...
- 基于RMI服务传输大文件的完整解决方案
基于RMI服务传输大文件,分为上传和下载两种操作,需要注意的技术点主要有三方面,第一,RMI服务中传输的数据必须是可序列化的.第二,在传输大文件的过程中应该有进度提醒机制,对于大文件传输来说,这点很重 ...
- Linux下c基于openssl生成MD5的函数
Linux下openssl提供了一系列哈希及加密的函数,如果调用openssl提供的MD5函数生成任意字符串的MD5呢?下面提供了一段代码实现Linux下c字符串生成md5的函数. 具体代码: 1 2 ...
- 基于OpenSSL的HTTPS通信C++实现
HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL.Nebula是一个为开发者提供一个快速开发 ...
- 基于OpenSSL的RSA加密应用(非算法)
基于OpenSSL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
- Dealing with a Stream-based Transport 处理一个基于流的传输 粘包 即使关闭nagle算法,也不能解决粘包问题
即使关闭nagle算法,也不能解决粘包问题 https://waylau.com/netty-4-user-guide/Getting%20Started/Dealing%20with%20a%20S ...
随机推荐
- CopyMemory、FillMemory、MoveMemory、ZeroMemory
CopyMemory 复制内存,第一个参数为目的地址,第二个参数为源地址,第三个参数为复制数据的大小,单位字节,源内存区域不能重叠,如果重叠,可以使用MoveMemory()函数.函数原型如下: vo ...
- easyui在IE中: SCRIPT1003: 缺少 ':'
- better later than never
工作一年半,写程序也有几年了,终于开了个博客,记录一下遇到的问题和解决方法,和其他需要记录的东西.希望自己不会懒……已经开通两周了才开始写,唉……
- Java NIO学习系列二:Channel
上文总结了Java NIO中的Buffer相关知识点,本文中我们来总结一下它的好兄弟:Channel.上文有说到,Java NIO中的Buffer一般和Channel配对使用,NIO中的所有IO都起始 ...
- spring 5.x 系列第12篇 —— 整合memcached (代码配置方式)
文章目录 一.说明 1.1 XMemcached客户端说明 1.2 项目结构说明 1.3 依赖说明 二.spring 整合 memcached 2.1 单机配置 2.2 集群配置 2.3 存储基本类型 ...
- (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
原生js实现放烟花效果,点击鼠标,然后随机向四周扩散,! 思路: 1.首先烟花是五颜六色的,所以我们先写一个随机颜色的函数: 2.创建一个制造烟花的构造函数,第一个参数为元素,第二参数为初始x轴位置, ...
- 微信小程序内链微信公众号的方法
最近接了一个需求,要求在微信小程序内部添加关注微信公众号的方式并给出解决方案,经过几天的翻官网文档,查周边资料,问资深技术员,初步给出两个解决方案: 题外话: 搬砖容易,建设难,搬砖的小伙伴请注明文章 ...
- 转载 make版MYsql 5.5.13
使用cmake安装mysql5.5.132014-04-09 12:59:42 分类: Mysql/postgreSQL 原文地址:使用cmake安装mysql5.5.13 作者:isqlw 安装cm ...
- 使用jinja2模板引擎生成html文件
使用jinja2模板引擎生成html文件 jinja2是纯Python的模板引擎,是仿照Django模板的Python模板语言. 它速度快,被广泛使用,提供了可选的沙箱模板执行环境保证安全. 使用pi ...
- git常用总结
git 基本配置 安装git yum -y install git git全局配置 git config --global user.name "lsc" #配置git使用用户 g ...
