https协议详解

https协议相对比于http来说多了一层ssl加密层,在国外应用广泛,国内也呈现逐渐增长的趋势。
ssl加密层主要由校验码、非对称解密算法、对称加密算法以及CA机构来组成,我们首先来看一下https的传输过程,如下图:
在这里插入图片描述

  1. 建立TCP连接,三次握手与服务器建立连接;
  2. 发送加密套件,包括校验码hash算法、对称加密算法、非对称加密算法;
  3. 服务器端选择一种自己支持的方案并返回给客户端;
  4. 客户端使用服务器端的公钥对本次传输使用的对称密钥进行加密并发送给服务器端;
  5. 服务器端获取客户端的信息并用自己的私钥进行解密获取对称密钥;
  6. 服务器和客户端开始对称加密信息传输;

而看上述过程似乎并没有什么不合理之处,但是仔细观察便会发现,上述过程中的1和2并没有进行加密,仍然是普通的http传输,那么就很有可能发生一种情况,客户端向服务器端A,但是在DNS解析的过程中就被服务器B给拦截了,并且返回给客户端一个虚假的IP地址,那么从1开始,客户端发送的所有请求就都不是发送给服务器A的,而不是服务器B的,导致从一开始就错付了,这就是DNS挟持。

所以为了防止发生这种情况,CA认证就应运而生了,CA机构就是为了让客户端能够确认服务器A确实是服务器A,而不是服务器B的一个第三方认证机构,那么这个认证是如何完成的呢,看下图:
在这里插入图片描述

  1. 首先服务器端生成自己的公钥和私钥,并部署在自己的服务器上;
  2. 接下来服务器端将自己的信息,包括公司,公钥,地址等信息发送给CA机构;
  3. CA机构收到信息后会对该公司进行线上或者线下的认证;
  4. 确认无误后,将公司以及自己的信息用hash算法生成信息摘要并且记录在CA机构上(大家都能从CA机构上查询到这些信息摘要,信息摘要是hash后的形式);
  5. 接下来CA机构再用自己的私钥对信息摘要进行加密,并且生成数字签名证书交给服务器端;

整个数字签名认证的生成过程就如上所述,而生成数字签名后如何能让客户端确认服务器A是服务器A而不是服务器B呢?验证过程如下:

  1. 客户端拿到服务器A的数字签名证书;
  2. 客户端去CA机构上查询服务器A的信息摘要,并且用CA机构提供的公钥来对1拿到的数字签名证书进行解密得到信息摘要,对比解密出来的信息摘要和CA机构提供的信息摘要是否一致,如果一致则说明服务器A是正确的;
    这样以来客户端就完成了对服务器端的验证,就可以继续进行接下来的数据传输了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值