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阅读模式/单元格行列指示/聚光灯开发技术要 ...
随机推荐
- scrapy框架的中间件
中间件的使用 作用:拦截所有的请求和响应 拦截请求:process_request拦截正常的请求,process_exception拦截异常的请求 篡改请求的头信息 def process_reque ...
- Linq.Expressions扩展ExpressionExtension
手上有一个以前项目用到的.NET工具类封装的DLL. 正好又想试一下动态LAMBDA表达式,用.NET Reflector看一下源码. public static class ExpressionEx ...
- DHCP中继配置
(三台都需要关闭防火墙 前两台需要安装dhcp ) 第一台linux(vmnet2)(192.168.1.1) vim /etc/sysconfig/network-scripts/ifcfg-ens ...
- H3C防火墙开启区域间互访
配置ip和路由以及将端口放至Untrust之后,外网还是不通,需要以下命令 interzone policy default by-priority 或者下面: security-zone intra ...
- Server:www121 Server:www120 Server:NWS_SP 内容被散列,并在响应中放入Etag When to Use Entity-Tags and Last-Modified Dates
1 Request URL:http://www.biyao.com/minisite/bzzx 2 Request Method:GET 3 Status Code:200 OK 4 Remote ...
- layui的tabletree扩展组件
需求:点击父级菜单展示子级菜单 难点:某个父级菜单下面有5000条子级菜单(有点坑),当我想把这5000条子级菜单塞到父级菜单下面的时候完蛋了,页面卡死了... 解决:tabletree这组件我发现用 ...
- JavaScript基础知识-基本概念
typeof操作符 typeof 操作符返回一个字符串,表示未经计算的操作数的类型. // 数值 typeof 37 === 'number'; typeof 3.14 === 'number'; t ...
- Geotools操作GeoJSON:解析FeatureCollection对象文件
Geotools操作GeoJSON:解析FeatureCollection对象文件 一.解析FeatureCollection对象文件 1.1 geotools操作GeoJSON过程中的问题及相关源码 ...
- 使用Spring StateMachine框架实现状态机
spring statemachine刚出来不久,但是对于一些企业的大型应用的使用还是十分有借鉴意义的. 最近使用了下这个,感觉还是挺好的. 下面举个例子来说下吧: 创建一个Spring Boot的基 ...
- 读取EXCEL文档解析工具类
package test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException ...