最近调试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 数据加密原理简述的更多相关文章

  1. TCP/IP协议工作原理简述

    TCP/IP协议工作原理简述 // */ // ]]>   TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 ...

  2. SSL/TLS 原理详解

    本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...

  3. [No0000126]SSL/TLS原理详解与WCF中的WS-Security

    SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...

  4. ButterKnife的原理简述

    ButterKnife的原理简述 注解处理器Java5 中叫APT(Annotation Processing Tool),在Java6开始,规范化为 Pluggable Annotation Pro ...

  5. SSL 通信原理及Tomcat SSL 配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  6. Java 下 SSL 通信原理及实例

    有关SSL的原理和介绍在网上已经有不少,对于Java下使用keytool生成证书,配置SSL通信的教程也非常多.但如果我们不能够亲自动手做一个SSL Sever和SSL Client,可能就永远也不能 ...

  7. SSL 通信原理及Tomcat SSL 双向配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  8. Excel阅读模式/聚光灯开发技术序列作品之三 高级自定义任务窗格开发原理简述—— 隐鹤

    Excel阅读模式/聚光灯开发技术序列作品之三 高级自定义任务窗格开发原理简述——    隐鹤 1. 引言 Excel任务窗格是一个可以用来存放各种常用命令的侧边窗口(准确的说是一个可以停靠在类名为x ...

  9. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld

    Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述———— 隐鹤  /  HelloWorld 1. 引言 自本人第一篇博文“Excel阅读模式/单元格行列指示/聚光灯开发技术要 ...

随机推荐

  1. 转 jmeter测试手机号码归属地

    jmeter测试手机号码归属地   jmeter测试手机号码归属地接口时,HTTP请求有以下两种书写方法: 1.请求和参数一同写在路径中 2.参数单独写在参数列表中 请求方法既可以使用GET方法又可以 ...

  2. XShell下便捷上载/下载文件到虚拟机

    1.客户机联网后,安装 rz,sz 服务,命令如下: yum install lrzsz 2.XShell连接客户机: 2.1 上传文件:运行rz,在弹窗内选择Windows本地文件上传到客户机当前目 ...

  3. 前置时间(Lead Time),也称前置期、备货周期

    https://wiki.mbalib.com/wiki/前导时间 什么是前导时间 所谓的前导时间(leading time),就是产品从设计,到生产.物流.销售的过程. BELLWETHER:&qu ...

  4. SSL_ERROR_WANT_READ

    ``` 47757 2020/05/07 06:36:04 [debug] 19413#19413: *23421 event timer: 11, old: 15581551413, new: 15 ...

  5. 选出ip记录表最近的10行数据

    w select * from wip where id>(select (select max(id)from wip)-10) ;

  6. CF912A

    题意 你手里有 A 个黄水晶和 B 个蓝水晶,其中两个黄水晶可以造一个黄水晶球,三个蓝水晶可以造一个蓝水晶球,一黄一蓝两个水晶可以造一个绿水晶球. 现在你需要 x 个黄水晶球,y 个绿水晶球,z 个蓝 ...

  7. EasyConnect连接成功后,虚拟ip地位未分配

    文章目录 #问题描述: 今天公司做项目,连接上EasyConnect以后,显示连接成功,但是虚拟ip地址未分配,导致无法远程连接数据库,以及svn无法更新项目. #解决办法: 百度网上各种解决办法,没 ...

  8. redis学习教程四《管理、备份、客户端连接》

    redis学习教程四<管理.备份.客户端连接>  一:Redis服务器命令 Redis服务器命令 下表列出了与Redis服务器相关的一些基本命令. 序号 命令 说明 1 BGREWRITE ...

  9. centos6.5升级gcc 4.4.7为最新版4.9.1

    ==================本方法切实可行===桌面版不建议用.centos============================== 1.下载源码包 我的下载  gcc-4.9.1.tar ...

  10. linux系统rpm和yum软件包管理

    软件安装方式总结 安装软件方式有如下几种: 方式1:编译安装 将源码程序按照需求进行先编译,后安装 缺点:装过程复杂,而且很慢 优点:安装过程可控,真正的按需求进行安装(安装位置.安装的模块都可以选择 ...