https+非对称加密+对称加密

今天系统的看了下https原理,并没有深入细节,细节有现成的软件实现,各语言都有各自实现大笑

https=http+ssl,两种协议的合体,ssl协议升级版为tls,ssl位于http应用层与tcp中间,注意ssl只保证安全(不被破解),并不保证可靠(即消息是否送达),这一点有tcp保证。

计算机七层网络模型其实就是把复杂的系统设计拆分成一个个小的任务,再加以组装(模块化设计),好处就是标准化、便于理解,定位问题,以及只提供接口不管实现等。

https采用非对称加密算法+对称加密算法来保证数据的安全。

非对称加密算法涉及到需要向ca认证机构(证书签发机构,类似官方权威)申请证书。

c代表client(web就是浏览器,客户端就是软件),s代表server(服务器),注意:认证是有浏览器完成,而不是用户。

当用户请求某个网站如:https://www.baidu.com,c发送请求到s,个人理解,再没有到达s的http层之前,首先s的ssl层会先发送证书给c,c会根据证书使用认证机构发布的公钥解密验证,证明确实是该网站,则会随机生成一对对称秘钥,并用s的公钥加密对称秘钥,并用对称秘钥加密发送的请求(url参数等信息),s收到请求后,用私钥解密对称秘钥,并用对称秘钥解密c用对称秘钥加密的url,然后再用对称秘钥对返回给c的信息进行加密,c用对称秘钥进行解密,至此c和s握手完成,以后c和s相互发送消息就采用c发送的对称秘钥来加密解密,不需要每次都验证真伪。

上面说的是单向认证,即客户端认证服务端。双向认证其实就是c也有一套证书和公钥秘钥,c先认s,s再认证c,过程一样。

证书:是有认证机构颁发的,申请者用认证机构的公钥加密信息进行申请,认证机构用私钥进行解密,证书记录了s的基本信息,是谁,时间戳等,并用认证机构的私钥进行数字签名(即加密),并发送给申请者,只能用认证机构的公钥才能解密,过程可能比这个复杂,没有深入研究,c验证s也是采用的此原理

https流程基本梳理完毕,只是记录下,加深记忆。最后附一张泳道图:


没有更多推荐了,返回首页