https的简明理解!

证书申请: 

申请组织提供证书(即企业自己的公钥),组织信息、个人信息(一般是指需要访问的域名)等提交到ca组织。
ca组织会通过线上或者线下的方式对该组织进行审核,如组织是否存在,域名所有权是否属于该组织,该组织是否从事非法业务等。如果均无问题,则ca组织会为该企业生成证书
该证书中包含信息:该组织的公钥证书、组织、个人信息、颁发者信息、证书序列号、有效时间、签名散列算法等明文,同时还有一个CA组织使用自己的私钥对前面说的明文信息加密的签名。
该签名产生的算法是,CA组织使用指定指定的散列算法,对明文信息进行散列,得到一个摘要,然后再使用CA的私钥对该摘要进行签名。
上述是证书的生成过程。
在https请求过程中。

http请求过程:

证书校验:
首先c端第一次请求server 的https地址时,会提示下载证书。一般主流的浏览器上会内置CA的根证书。
S端证书下载到本地后,CA的根证书则会对该证书进行校验是否合法,校验逻辑是,首先用根证书对签名进行解密,得到了信息摘要(我们有时候也叫指纹)以及指纹算法(也就是散列算法)。
然后再使用CA根证书对下载证书中的明文信息如、组织、个人信息、颁发者信息、证书序列号、有效时间等按照指纹算法进行加密或者叫散列,得到信息摘要(也叫指纹)。然后对比该计算出的指纹信息与证书中解密的指纹信息是否一致。此时则在c端认为该证书有效。

请求封装:
当下载的证书合法性得到校验后,后续,则会用下载的公钥证书对http请求中的信息进行加密,此时浏览器发出到网络上的信息则是加密信息。具体的加密方式是,c端会随机生成一个字符串,然后通过证书进行加密,作为与服务端通信的密码,然后服务端收到该密码后使用私钥进行解密,得到该随机字符串,然后服务端与客户端通信就使用该随机字符串进行加密。后续c端发出的请求则会使用该随机生串进行一次加密。

从这里可以看出,这里面同时使用了对称加密和非堆成加密手段。非对称加密用于通信握手环节,获取c端和s端通信的秘钥。对称加密这是后续通信过程中使用互信的密码加密。

置于这么处理的原因是,非对称加密的计算需要资源,算法复杂,执行时间长,而对称加密算法相对执行效率高、资源耗费低,所以就采取了这种方案,在证书校验合法后,则使用非堆成加密方式来达成一致,即生成双方都新人的密码,该密码只有通信双方知道。然后后续通信过程,使用该密码进行数据加密。这样就只用初始化连接时候的多一次非对称加解密请求来解决了后续效率低 问题。

置于说服务端的证书放在什么位置,那就看具体的部署要去,如服务端私钥前置,则可以直接放在nginx或者apache端,nginx或者apache对c端请求的信息解密后,直接明文传到后端的tomcat;或者私钥放在tomcat端,在tmcat中配置私钥证书,即解密由tomcat完成。当然,私钥证书也可以放在网络防火墙、网关上,具体就要看架构设计了。
以上就是https请求的来龙去脉简明理解。

posted on 2020-08-06 17:01  anruy  阅读(217)  评论(0编辑  收藏  举报

导航