您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

单向认证 vs. 双向认证

时间:2022-03-03 15:33:21  来源:  作者:班博编程
单向认证 vs. 双向认证

 

基本概念

SSL协议

SSL(Secure Sockets Layer,安全套接字协议)是为网络通信提供安全及数据完整性的一种安全协议。SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密。

  • 对称加密 :速度高,可加密内容较大,用来加密会话过程中的消息
  • 公钥加密 :加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥
单向认证 vs. 双向认证

 

CA证书

我们知道HTTPS使用RSA加密算法来保证秘钥传递的安全性,我们如果保证Server下发的公钥就是真正的Servier给我们的呢,为例解决这个问题,HTTPS使用CA证书解决这个问题,CA证书包含签名信息和公钥,CA证书由权威机构使用自己的私钥对公钥等信息进行签名。客户端使用对应内置的root证书的公钥对服务端下发的证书签名解密进行验证,如果验证失败则认为当前的证书是非法的。

证书链

为了防止CA机构的私钥泄露导致大规模的CA证书不再安全,CA机构不会使用root证书私钥对服务器公钥进行签名,而是使用二级证书私钥对服务器公钥进行签名,这样如果中间 CA 的私钥泄漏了,那用根 CA 再签发一个就好了,不会影响到这个根 CA 的所有证书。

 

单向认证

单向认证 vs. 双向认证

 

SSL 单向认证只需要验证服务端的身份,无需验证客户端的身份。SSL 单向认证的流程如下图所示。

单向认证 vs. 双向认证

 

  1. 客户端发起 HTTPS 建立连接请求,将客户端支持的 SSL 协议版本号、加密算法种类、生成的随机数等信息发送给服务端。
  2. 服务端向客户端返回 SSL 协议版本号、加密算法种类、生成的随机数等信息,以及服务端的证书(server.crt)。
  3. 客户端验证证书(server.crt)是否合法,并从此证书中获取服务端的公钥:检查证书是否过期、检查证书是否已经被吊销、检查证书是否可信、检查收到的证书中的域名与请求的域名是否一致。
  4. 证书验证通过后,客户端生成一个随机数(密钥 K),作为通信过程中对称加密的密钥,并用服务端证书的公钥进行加密,然后发送给服务端。
  5. 服务端收到客户端发送的加密信息后,使用私钥(server.key)进行解密,获取对称加密密钥(密钥 K)。

在接下来的会话中,客户端和服务端将会使用该对称加密密钥(密钥 K)进行通信,保证通信过程中信息的安全。

 

双向认证

单向认证 vs. 双向认证

 

SSL 双向认证需要验证客户端和服务端的身份。SSL 双向认证的流程如下图所示。

单向认证 vs. 双向认证

 

  1. 客户端发起 HTTPS 建立连接请求,将客户端支持的 SSL 协议版本号、加密算法种类、生成的随机数等信息发送给服务端。
  2. 服务端向客户端返回 SSL 协议版本号、加密算法种类、生成的随机数等信息,以及服务端的证书(server.crt)。
  3. 客户端验证证书(server.crt)是否合法,并从此证书中获取服务端的公钥:检查证书是否过期、检查证书是否已经被吊销、检查证书是否可信、检查收到的证书中的域名与请求的域名是否一致。
  4. 服务端要求客户端发送客户端的证书(client.crt),客户端将自己的证书发送至服务端。
  5. 服务端验证客户端的证书(client.crt),验证通过后,服务端使用根证书(root.crt)解密客户端证书,然后获取客户端的公钥。
  6. 客户端向服务端发送自己所支持的对称加密方案。
  7. 服务端从客户端发送过来的对称加密方案中,选择加密程度最高的加密方式,并使用客户端公钥加密后,返回给客户端。
  8. 客户端使用客户端的私钥(client.key)解密加密方案,并生成一个随机数(密钥 K),作为通信过程中对称加密的密钥,然后使用服务端证书的公钥进行加密后再发送给服务端。
  9. 服务端收到客户端发送的加密信息后,使用服务端的私钥(server.key)进行解密,获取对称加密密钥(密钥 K)。

在接下来的会话中,客户端和服务端将会使用该对称加密密钥(密钥 K)进行通信,保证通信过程中信息的安全。

 

总结

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

  • SSL 单向认证 无需客户端拥有证书,只需服务端拥有证书。SSL 双向认证 需要客户端和服务端双方都拥有证书。
  • SSL 单向认证相对于 SSL 双向认证的认证过程,无需在服务端验证客户端证书、以及协商加密方案,服务端发送给客户端也是未加密的密码方案(并不影响 SSL 认证过程的安全性)。
  • 一般 Web 应用的用户数量众多,无需在通讯层做用户身份验证,因此配置 SSL 单向认证即可。但部分金融行业用户的应用对接,可能会要求对客户端做身份验证,此时就需要做 SSL 双向认证。


Tags:单向认证   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
单向认证 vs. 双向认证
基本概念SSL协议SSL(Secure Sockets Layer,安全套接字协议)是为网络通信提供安全及数据完整性的一种安全协议。SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传...【详细内容】
2022-03-03  Search: 单向认证  点击:(1315)  评论:(0)  加入收藏
HTTPS单向认证、双向认证、抓包原理、反抓包策略
HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层。这里提一下TCP/IP的分层共分为四层:应用层、传输层、网络...【详细内容】
2019-09-24  Search: 单向认证  点击:(984)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(1)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(0)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(0)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(3)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(8)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(15)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(11)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(8)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(14)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条