SSL 数据加密原理简述
最近调试mqtt协议,为了保证数据安全性和将来客户端的对云的兼容性选择了openssl作为安全加密中间层,而没有使用私有的加密方式。所以花了点时间学习了一下ssl 加密流程整理如下:
因为正常正式使用场合是CA机构给对应的组织结构颁发CA证书的,这里是调试就自己使用opanssl 生成证书了,很多细节参考下面的参考博文。配置过程:
#这一步本来是要证书签发机构,发行给网站组织。下面的方式是调试自己产生组织根证书
openssl req -new -x509 -days 36500 -extensions v3_ca -keyout ca.key -out ca.crt
#购买方使用买的证书(组织根证书)给自服务器产生秘钥
opensslgenrsa -out server.key 2048
#拿服务器秘钥计算服务器数字签名,将来这个CSR文件会发送到请求交互方,ssl_client必须验证 ssl_server
openssl req -out server.csr -key server.key -new
#拿数字签名和证书机构给的组织证书和组织秘钥产生服务器证书,至此服务器已经具备ssl条件
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 36500
#使用买的证书(组织证书)给客户端产生秘钥
opensslgenrsa -out client.key 2048
#拿秘钥计算数字签名,将来这个CSR文件会发送到请求交互方服务器(如果服务器需要验证client),ssl_server选择性验证 ssl_client
openssl req -out client.csr -key client.key -new
#拿数字签名和证书机构给的组织证书和组织秘钥产生客户端证书,至此client已经具备ssl条件
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 36500
汇总成为一个脚本就是:
openssl req -new -x509 -days 36500 -extensions v3_ca -keyout ca.key -out ca.crt
openssl genrsa -out server.key 2048
openssl req -out server.csr -key server.key -new
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 36500
#
#
openssl genrsa -out client.key 2048
openssl req -out client.csr -key client.key -new
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 36500
SSL 的身份认证过程:
1、client 会拥有服务器的证书(非CA给的证书),在client请求服务器时服务器会返回签名文件。--------------明文
2、通过本地的服务器的证书鉴别签名文件就能知道服务器是否可信,如果可信前面的解密服务器签名文件的过程得到了服务器的公钥。
3、用服务器的公钥加密主密钥计算分散因子(Change Cipher Spec)后发送到服务器同时告知服务器协商后使用这个主密钥。--------------密文
4、服务器用私钥解密这个分散因子,并返回client确认协商结果和可能还带有会话ID。--------------密文
5、此时clien 就使用之前第三步告诉服务器的秘钥,如果成功解密服务器的回应则说明服务器是合法的。-------------到此客户端验证服务器身份和秘钥交换就结束了。
如果服务器需要验证客户端则还需要如下过程(这个一般很少使用,因为需要服务器保存所有合法客户端的的证书):
1.5、在服务器回发自己的数字签名后会同时请求client的数字签名,然后验证数字签名是否正确。其余过程不变。
这里的1.5代表在上面步骤的第一步和第二步之间。
参考博文写的非常好:https://www.cnblogs.com/bhlsheji/p/4586597.html
SSL 数据加密原理简述的更多相关文章
- TCP/IP协议工作原理简述
TCP/IP协议工作原理简述 // */ // ]]> TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 ...
- SSL/TLS 原理详解
本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...
- [No0000126]SSL/TLS原理详解与WCF中的WS-Security
SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...
- ButterKnife的原理简述
ButterKnife的原理简述 注解处理器Java5 中叫APT(Annotation Processing Tool),在Java6开始,规范化为 Pluggable Annotation Pro ...
- SSL 通信原理及Tomcat SSL 配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- Java 下 SSL 通信原理及实例
有关SSL的原理和介绍在网上已经有不少,对于Java下使用keytool生成证书,配置SSL通信的教程也非常多.但如果我们不能够亲自动手做一个SSL Sever和SSL Client,可能就永远也不能 ...
- SSL 通信原理及Tomcat SSL 双向配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- Excel阅读模式/聚光灯开发技术序列作品之三 高级自定义任务窗格开发原理简述—— 隐鹤
Excel阅读模式/聚光灯开发技术序列作品之三 高级自定义任务窗格开发原理简述—— 隐鹤 1. 引言 Excel任务窗格是一个可以用来存放各种常用命令的侧边窗口(准确的说是一个可以停靠在类名为x ...
- Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld
Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述———— 隐鹤 / HelloWorld 1. 引言 自本人第一篇博文“Excel阅读模式/单元格行列指示/聚光灯开发技术要 ...
随机推荐
- QTextEdit的paste
By 鬼猫猫 20130117 http://www.cnblogs.com/muyr/ 背景 QTextEdit中粘贴一大段文字时,EasyDraft中粘贴进去的文字们的格式就乱了,处于无格式.还有 ...
- 001.IT运维面试问题-Linux基础
Linux基础 简述Linux主流的发行版? Redhat.CentOS.Fedora.SuSE.Debian.Ubuntu.FreeBSD等. 简述Linux启动过程? ⑴开机BIOS自检,加载硬盘 ...
- CentOS7,非LVM根分区扩容步骤:
1.查看现有的分区大小 非LVM分区,目前磁盘大小为40G,根分区总容量为40G,(是自定义分区安装的) 2.关机增加磁盘大小至100G 如果你们是vmwaer虚拟软件安装的那如下入扩容: 3.查看磁 ...
- chain issues incorrect order,EXtra certs,Contains anchor
背景: 下载颁发下来的ssl证书安装好之后网站正常显示安全,但是通过ssl证书网站去检测报错误:chain issues incorrect order,EXtra certs,Contains an ...
- 公共错误码 - 支付宝开放平台 https://opendocs.alipay.com/open/common/105806
公共错误码 - 支付宝开放平台 https://opendocs.alipay.com/open/common/105806
- MySQL常见优化
MySQL常见优化 1.操作符优化 1.1<> 操作符(不等于) 1.2LIKE优化 1.3in,not in,exists与not exists 1.3.1in和exists 2.whe ...
- Java获取类路径的方式
Java环境中,如何获取当前类的路径.如何获取项目根路径等: @Test public void showURL() throws IOException { // 第一种:获取类加载的根路径 Fil ...
- unix环境高级编程第六章笔记
口令文件 阴影口令 组文件 附属组ID 登录账户记录 系统标识 口令文件<\h2> /etc/passwd文件是UNIX安全的关键文件之一.该文件用于用户登录时校验用户的口令,文件中每行的 ...
- 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest 题解(PART)(9/13)
$$2014-2015\ ACM-ICPC,\ NEERC,\ Southern\ Subregional\ Contest$$ A Nasta Rabbara B Colored Blankets ...
- python+requests爬取百度文库ppt
实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html 在下面这种类型文件中的请求头的url打开后会得到一个页面 你会得到如下图 ...