HTTPS 的认证流程
渐进式的描述 HTTPS
协议的传输过程。
铺垫知识
非对称加密
公钥(Public Key)
与 私钥(Private Key)
是通过加密算法得到的一个密匙对。公钥是可公开的,私钥是需要私有的。公钥加密的内容只有私钥能解,反之亦然。也称为为非对称加密方式,非对称加密和解密花费的时间长、速度相对较慢。
对称加密
那么对称加密又是什么样的方式呢?只有一把密钥
,加密与解密都只能通过该密钥。对称加密解密的速度比较快。
公钥加密,私钥解密:
这样的方式称为加密
,保证传输内容不被其他人解密。因为只有持有私钥的人可以解开公钥加密的内容,而私钥是非公开的。
私钥加密,公钥解密:
这样的方式称为签名
,保证传输内容不会被人篡改,因为若想篡改后公钥能够解密,就必须通过私钥加密,而私钥是非公开的。不过其他人可以查看,因为公钥是公开的。
传输方式的渐进演变
1)对称加密传输
对称加密的速度很快,可以用于传输过程中的数据加密,防止传输内容被泄露
、篡改
。但如何将密钥
安全的从Server
传输到Client
是个问题(该问题就是后面要解决的问题
),一旦密钥
被中间人获取,那么传输内容就可以被他人解密后查看或篡改了。
2)非对称加密传输 - 1
Server
持有私钥A,Client
持有公钥B。通过私钥加密,公钥解密
,可以保证不被篡改,但无法保证被其他人查看。
3)非对称加密传输 - 2
为了解决私钥加密,公钥解密
可以被查看的问题,再次引入一对私钥C、公钥D。Client
持有私钥C,Server
持有公钥D。每端都交叉持有一对公、私钥,实现双向安全通信。
Client
向Server
传输时,通过私钥C、公钥D实现加解密。Server
向Client
传输时,通过私钥A、公钥B实现加解密。
但是,这种方式虽然可以安全通信,但效率很低。每次通信每方都需要进行非对称的解密、加密。
4)对称加密 与 非对称加密 配合传输
在对称加密传输
中提到了密钥
无法安全传输。那么是否可以这样,Client
获取密钥时,通过非对称加密
的方式进行获取。那么后继的请求都通过获取的密钥进行对称加解密?
看起来不错:Client
持有密钥A,Server
持有公钥B。对称加密 密钥M
会被Server
通过公钥加密后发送给Client
。
4)破解对称加密 与 非对称加密 配合传输
有一个坏蛋也配置了一对密钥:私钥X、公钥Y。Clinet
传输给 Server
公钥B时,被坏蛋替换为他的公钥Y。那么就可以通过私钥X解开Server
通过公钥Y加密的对称加密 密钥M
,复制了一份,进而后继可以继续查看、篡改传输内容。然后又用Client
的公钥B加密M后返回给Client
,Client
可以用私钥C成功解锁对称加密密钥M
。
也就是说:
Server
拿到的不是Client
传输的公钥B。Client
获取的密钥M
确实Server
返回的,但却不知已经被人知晓了。
本质原因就在于公钥B被人替换了。
5)引入 CA 证书认证机构
认证机构也有一对公私、钥:密钥J,公钥K。Client
直接向认证机构发送公钥B,认证机构通过密钥J加密后返回Client
,Client
在返回给Server
。此时坏蛋可以通过公钥K查看到通过密钥J加密的公钥B。但是无法修改它,因为他没有密钥J。(通过私钥加密,公钥解密,防止被篡改
)如果坏蛋用其他私钥进行加密,那么Server
就无法通过公钥K成功解密,那么Server
就会知道这是已经被人修改过了。如果Server
成功解密,那么就可以通过公钥B加密M,并且只有Client
能通过密钥A解开(通过公钥加密,私钥解密,防止被解密查看密钥M
)。
End
HTTPS 的认证流程相关推荐
- 浏览器获取服务器CA证书与认证流程-HTTPS
证书的签发过程 服务方 S 向第三方机构CA提交公钥.组织信息.个人信息(域名)等信息并申请认证: CA 通过线上.线下等多种手段验证申请者提供信息的真实性,如组织是否存在.企业是否合法,是否拥有域名 ...
- 若依管理系统——前后端分离版(二)登陆接口分析及SpringSecurity的登陆认证流程
一.登陆流程分析 0. 流程整理 1. 图片验证码接口/captchaImage 2.登陆验证接口/login 2.1 校验图片验证码 2.1 查询用户信息 2.3查询用户的权限信息 2.4 生成令牌 ...
- HTTPS原理与流程
Table of Contents HTTP HTTPS 实现原理 工作流程 对称加密与非对称加密 CA 颁发机构 总结 HTTP HTTP(Hypertext Transfer Protocol)超 ...
- 巧用 Nginx 快速实现 HTTPS 双向认证
1.原理 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立 HTTPS 连接的过程中,握手的流程比单向认证多了几步.单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建 ...
- 浏览器获取CA认证流程
首先说说证书的签发过程: 服务方 S 向第三方机构CA提交公钥.组织信息.个人信息(域名)等信息并申请认证: CA 通过线上.线下等多种手段验证申请者提供信息的真实性,如组织是否存在.企业是否合法,是 ...
- UiPath认证流程
UiPath的认证流程主要分为以下五个步骤,通过以下简单的五步即可获得认证: 第一步:选择考试 选择最适合你的考试.可以查看以下两个文档以选择最适合你的考试. RPA联考详细信息:https://st ...
- 微信公众平台开发(2)--微信认证流程图文详解
点此查看 微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载 本文目录 1. 微信认证的作用 2. 登录 3. 开始认证 4. 认证流程 4.1 准备资料 4.2 同意协议 4.3 ...
- HTTPS双向认证(Mutual TLS authentication)
HTTPS双向认证(Mutual TLS authentication) 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步.单向认证 ...
- java实现HTTPS单向认证TLS指定加密套件(文章很详细,好文章!)
1.HTTPS介绍 由于HTTP是明文传输,会造成安全隐患,所以在一些特定场景中,必须使用HTTPS协议,简单来说HTTPS=HTTP+SSL/TLS.服务端和客户端的信息传输都是通过TLS进行加密. ...
最新文章
- SpringMVC中Controller如何将数据返回
- mfc控件变量没定义_WinCC字符串归档变量查询
- DND是如何封装WinSock的?
- Redirecting to binsystemctl start crond.service
- c语言程序设计中北大学,《中北大学软件学院2013届C语言程序设计实训题目.doc...
- 第四十五期:程序员未来干什么?做架构还是做管理?
- 火山去水印链接_在线批量去水印下载快手图集视频、抖音、火山等平台方法技巧!...
- mybatis case when_MyBatis 几种通用的写法
- 【数据结构和算法笔记】c语言实现顺序表和链表
- 12.sql语句增删改查快速回顾
- 【转】脉络清晰的BP神经网络讲解,赞
- POJ 3080 Blue Jeans(KMP + 暴力)
- 蒋涛对话王成录:开发者的黄金十年
- 安卓如何调出软键盘_系统软键盘Android在外接物理键盘时,如何强制调用系统软键盘?...
- firefox正在安装组件,以便播放此页面上的音频或视频
- 如何用火狐浏览器firefox模拟手机浏览器客户端
- SQL语句(增删改查)
- 卷积神经网络在句子分类上的应用[翻译]
- python: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization问题解决
- zend stutio安装
热门文章
- 解决Github访问速度慢以及图片加载慢的问题
- Oracle数据库安装先决条件检查失败解决方案
- Linux7双机,Centos 7 keepalived双机热备
- stage缩放属性:scaleMode
- 批处理获取服务器目录文件是否存在,批处理教程:获取批处理文件所在路径
- java关键字用于引用包,Java常用关键字总结
- 给一朋友的关于项目组建设的建议
- ubuntu下如何安装.bin文件
- c语言程序从main()函数开始执行,所以这个函数要写在( ).,C语言程序从main()函数开始执行,所以这个函数要写在( )。...
- 素問·上古天真論-篇一