初识OpenSSL
首先来认识一下SSL和TLS
SSL:Secure Sockets Layer 安全套接层协议 由Netscape公司在1994年发布;
TLS:Transport Layer Security 传输层安全协议 由IETF在1999年发布 与SSL基本上兼容;
SSL会话三部曲:
客户端向服务器端索要并验证证书;
双方协商生成“会话密钥”;
双方采用“会话密钥”进行加密通信;
第一阶段:ClientHello
客户端支持的协议版本、加密算法、压缩算法等
并生成一个随机数,用于之后生成的“会话密钥”
第二阶段:ServerHello
确认使用的协议版本、加密算法等,也生成一个随机数,用于之后生成的“会话密钥”,
并向客户端发送服务器证书;
第三阶段:
客户端验证服务器证书(发证机构,证书完整性,证书持有者,证书有效期,吊销列表等),在确认无误后取出其公钥;
发送以下信息至服务器:
一个随机数,
编码变更通知,
客户端握手结束通知;
第四阶段:
收到客户端发来的随机数,计算生成本次会话用到的“会话密钥”;
发送以下信息至客户端:
编码变更通知,
服务器握手结束通知;

如图阐述手动在用户A和用户B之间进行加密通信的简单原理。
第一步:用户A,B都是CA的信任用户,他们事先需协商好进行加密通信所需要的加密算法等等,并相互认证各自的身份。
第二步:用户B将需要发送的数据(元数据)进行单向加密,并用自己的私钥对数据特征码进行加密(也就是数字签名)。
第三步:用户B将元数据和数字签名用一个一次性的密钥进行对称加密,并用A的公钥加密这段对称加密密钥,然后将其一起发送给用户A。
第四步:用户A接收到数据后,先用自己的私钥解密对称加密,得到数字签名和元数据;再用B的公钥解密数字签名,如果能解开,说明数据是B发来的(验证B的身份);
然后再用单向加密加密元数据,将特征码与解密后的数字签名对比,如果相同,则证明数据没有被篡改(保证了数据的完整性)。
初识OpenSSL的更多相关文章
- openssl RSA加密方法初识
作为非对称加密算法,有两对密钥 一般用法 加密结果=RSA_EN(数据,公钥); 解密结果=RSA_DE(数据,私钥); RSA填充 (RSA_public_encrypt和RSA_private_d ...
- 初识HTTP协议
本篇文章从概念上初识HTTP协议,参考链接:http://www.runoob.com/http/http-tutorial.html 目录: 一.HTTP协议 HTTP 工作原理 HTT ...
- 初识Nginx及编译安装Nginx
初识Nginx及编译安装Nginx 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 nginx-1.12.2 1.什么是Nginx? 如果你听说或使用过Apache软件 ...
- RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密
最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的 ...
- 显示本地openssl支持的加密算法
参考页面: http://www.yuanjiaocheng.net/webapi/parameter-binding.html http://www.yuanjiaocheng.net/webapi ...
- 在春意盎然的季节里初识GIT
Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征. ...
- 非阻塞/异步(epoll) openssl
前段时间在自己的异步网络框架handy中添加openssl的支持,当时在网络上搜索了半天也没有找到很好的例子,后来自己慢慢的摸索,耗费不少时间,终于搞定.因此把相关的资料整理一下,并给出简单的例子,让 ...
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
随机推荐
- 18-4-bind
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Markdown语法--整理
Markdown基本语法 [TOC] 优点: 1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作. 2.操作简单.比如:word编辑时标记个 ...
- Python全栈开发:进度条
import sys import time for i in range(31): # 清空打印内容 sys.stdout.write("\r") # 控制输出样式 sys.st ...
- 莫烦PyTorch学习笔记(五)——分类
import torch from torch.autograd import Variable import torch.nn.functional as F import matplotlib.p ...
- Extjs4 似bug非bug的东西修改
/** hzm modify * method: Ext.panel.Table.hasLockedColumns: function(columns) {} * function:支持extjs g ...
- Js中的onblur和onfocus事件应用介绍
html页面中,诸如按钮.文本框等可视元素都具有拥有和失去焦点的事件,本文以文本框获得和失去焦点为例简单讲解onfocus和onblur的应用 html页面中,诸如按钮.文本框等可视元素都具有拥有和失 ...
- mui.fire()用法
作用: mui.fire() 可以触发目标窗口的自定义事件 mui.fire( 目标窗口的webview , '自定义事件名' ,{参数列表}:) 目标窗口监听这个自定义事件 window.addEv ...
- RvmTranslator7.2
1. RvmTranslator7.2 增加一个视图方块,方便视图切换; Download: https://github.com/eryar/RvmTranslator/releases/tag/7 ...
- springmvc前端控制器拦截路径的配置报错404
1.拦截"/",可以实现现在很流行的REST风格.很多互联网类型的应用很喜欢这种风格的URL.为了实现REST风格,拦截除了jsp的所有. 2.拦截/*,拦截所有访问,会导致404 ...
- mvvmlight下passwordBox绑定的解决方法
在做公司的项目中,用到MVVMLight框架,需要做登陆注册的功能模块,但是在wpf中passwordBox没有内置绑定功能,因为出于安全的考虑.但是,博主又非常想要契合mvvm思想,一定要passw ...