SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用非对称加密,链路建立好之后,SSL对传输内容使用对称加密。

对称加密:速度高,可加密内容较大,用来加密会话过程中的消息

公钥加密:加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥

一、SSL单向认证过程

1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息

2、服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书

3、客户端使用服务端返回的信息验证服务器的合法性,验证通过后,则继续进行通信,否则终止通信,验证内容包括:

a、证书是否过期

b、发行服务器证书的CA是否可靠

c、返回的公钥是否能正确解开返回证书中的数字签名

d、服务器证书上的域名是否和服务器的实际域名相匹配

4、客户端向服务器发送自己所能支持的对称加密方案,供服务器进行选择

5、服务器在客户端提供的加密方案中选择加密程度最高的加密方式

6、服务器将选择好的加密方式通过明文方式返回给客户端

7、客户端接收到服务器返回的加密方案后,使用该加密方案生成产生随机码,用作通信过程中对称加密的密钥,使用服务端返回的公钥进行加密,将加密后的随机码发送至服务器

8、服务器收到客户端返回的加密信息后 ,使用自己的私钥进行解密,获取对称加密密钥。在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中的信息安全。

二、SSL双向认证过程

1、客户端向服务器发送连接请求(SSL协议版本号、加密算法种类、随机数等信息)

2、服务器给客户端返回服务器端的证书,即公钥证书,同时也返回证书相关信息(SSL协议版本号、加密算法种类、随机数等信息)

3、客户端使用服务端返回的信息验证服务器的合法性(首先检查服务器发送过来的证书是否是由自己信赖的CA中心所签发的,再比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户端认可这个服务端的合法身份),验证通过后,则继续进行通信,否则终止通信,具体验证内容包括:

a、证书是否过期
     b、发行服务器证书的CA是否可靠
     c、返回的公钥是否能正确解开返回证书中的数字签名
     d、服务器证书上的域名是否和服务器的实际域名相匹配

4、服务端要求客户端发送客户端的证书,客户端会将自己的证书发送至服务端

5、验证客户端的证书,通过验证后,会获得客户端的公钥

6、客户端向服务器发送自己所能支持的对称加密方案,供服务器端进行选择

7、服务器端在客户端提供的加密方案中选择加密程度最高的加密方式

8、将加密方式通过使用之前获取到的公钥(客户的公钥)进行加密,返回给客户端

9、客户端收到服务端返回的加密方案密文后,使用自己的私钥进行解密,获取具体加密方式,而后获取该加密方式的随机码,用作加密过程中的密钥,使用之前从服务端证书中获取到的公钥进行加密后,发送给服务端

10、服务端收到客户端发送的消息后,使用自己的私钥进行解密,获取对称加密的密钥,在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全

三、SSL单向认证和SSL双向认证的区别

SSL单向认证只要求站点部署了SSL证书就行,任何用户都可以去访问(IP被限制除外等),只是服务器提供了身份认证。SSL双向认证则是需要服务端与客户端提供身份认证,只能是服务端允许的客户去访问,安全性相对高一些。

双向认证SSL协议要求服务器和用户双方都有证书。单向认证SSL协议不需要客户拥有CA证书,只需将服务器验证客户证书的过程去掉,以及在协商对称密码方案、对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响SSL过程的安全性)密码方案。这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够安全,这也是强调使用128位加密通讯的原因。

一般Web应用都是采用SSL单向认证的,原因很简单,用户数目广泛,且无需在通讯层对用户身份进行验证,一般都在应用逻辑层来保证用户的合法登入。但如果是企业应用对接,情况就不一样,可能会要求对客户端(相对而言)做身份验证,这时就需要做SSL双向认证。

SSL认证:单向认证与双向认证——密码学笔记(八)相关推荐

  1. httos双向认证配置_APP爬虫双向认证抓包的两种方法

    APP抓包相对繁琐,越来越多的 APP 在 https 请求和响应时,为了防止中间人攻击(或中间人抓包),会做证书认证,让抓包工具抓不到请求.证书认证分单向认证和双向认证,双向认证是相较于单向认证而言 ...

  2. 服务器双向认证 原理,https认证方式以及HTTPS双向认证过程

    https认证方式以及HTTPS双向认证过程 分类:建站推广 编辑: 浏览量:100 2021-07-15 14:29:14 很多网站都配置了HTTPS而不是HTTP,因为安全性得到了极大的提高,如果 ...

  3. php双向验证SSL,php curl实现https双向认证的实例代码

    /** * https 双向认证 * edit: www.jbxue.com */ $strurl="https://192.168.6.120/index.html"; func ...

  4. 【循环链表】数据结构——单向循环链表和双向循环链表操作笔记

    循环链表 一.单向循环链表 1.单向循环链表的节点 2.单向循环链表的结构 二.双向循环链表 1.双向循环链表示意图 2.双向循环链表节点设计 3.双向循环链表的一般性结构 4.双向循环链表头插法插入 ...

  5. 什么是SSL双向认证,与单向认证证书有什么区别?

    SSL/TLS 证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是 ...

  6. 实现tomcat的https单向认证及双向认证

    前言 单向认证只需站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证 一般web应用都是采用单向认证的,原因很简单,用户数目广泛,且无需做在通讯层做用户身份验 ...

  7. 【网络】https单向认证和双向认证

    前言 之前面试的时候,面试官问我了解过https的双向认证吗?当时,的确不理解.不过没关系,现在就来补上. 正文 1.单向认证 还是有必要先说下单向认证,单向认证是我刚开始接触https的时候就了解到 ...

  8. 抓取app服务器证书,APP爬虫-双向认证抓包的两种方法

    证书认证分单向认证和双向认证,双向认证是相较于单向认证而言的,单向认证就是只在 APP 侧做证书校验,单向认证有现成的解决方法,比如用各种 bypass ssl 校验的 hook 脚本既可让单向认证失 ...

  9. mtls加密双向认证

    https://www.cloudflare.com/en-gb/learning/access-management/what-is-mutual-tls/ HTTPS双向认证(Mutual TLS ...

  10. Spring实现HTTPS双向认证

    目录 前言 一.单向认证和双向认证 二.创建keyStore和trustStore 三.服务端配置 四.客户端配置 总结 参考链接 前言 本篇博客讲的主要是双向认证,通过一些简单案例来展示双向认证的配 ...

最新文章

  1. 解答关于学习前端的一些问题
  2. FD.io/VPP — VPP 的安装部署
  3. html中两行三列怎样写,html – Flexbox 3 divs,两列,一列有两行
  4. python读取文件模式_python如何读取文件的数据
  5. Spring 中的代理选择原则
  6. mysql流式查询mybatis_流式查询:MyBatis千万级数据查询解决方案,避免OOM
  7. 使用valgrind检查内存越界
  8. C++入门教程(23)深度优先,广度优先(连连看判断是否可以消除)
  9. 容联云(第三方短信发送)
  10. 【JVM笔记】支配树(Dominator Tree)
  11. 蓝桥杯练习 小明上楼梯(递归设计)
  12. ECharts数据可视化饼状图(环形图-进度半圆形)
  13. pyecharts饼图pie制作
  14. 文件输出流,文件拷贝,资源释放
  15. 征途服务器维护镖车怎么办,征途网络游戏家族运镖问题
  16. AE TypeMonkey
  17. 博途TIA Portal V15 下载与安装教程
  18. Java生成包含大写字母,小写字母以及数字的无重复随机密码
  19. python 函数式编程及递归
  20. 教你轻松用Python画一只肥肥的柯基狗狗——turtle库绘制椭圆与弧线实践

热门文章

  1. 拥抱开放计算标准 重构数据中心格局
  2. swiper炫酷_swiper3d横向滚动多张炫酷切换banner
  3. python编译exe文件太大了_python编译windows下可执行的exe文件
  4. 成功解决Both binary classification-only and multiclassification-only loss function or metrics specified
  5. DataScience:对严重不均衡数据集进行多种采样策略(随机过抽样、SMOTE过采样、SMOTETomek综合采样、改变样本权重等)简介、经验总结之详细攻略
  6. 成功解决ModuleNotFoundError: No module named 'utils'
  7. Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)
  8. ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
  9. ML之DT(树模型):DT(树模型算法)算法的简介、代码定义、案例应用之详细攻略
  10. vs2017 不能加载.vdproj