HTTPS

为什么要用Https

   http是明文传输,存在窃听、篡改等风险,而https通过验证服务器正确性、协商通信加密密钥有效的降低了风险;

Https 基本原理

 基本原理:服务端生成密钥,并把公钥传给客户端。
 然后协商用对称加密算法,并根据信息各自生成对称密钥。
 协商完成后,接下来的数据通过该密钥进行加解密。
 数字证书出现是为了保证客户端拿到的公钥,是真证要访问服务器生成的公钥,
 而不是别人伪装的公钥,从而保证通信的安全性。
 下面将详细分析https通信流程:

Https 通信流程

1. [c ->s]  client hello 消息:主要包含如下内容
  <1>支持的协议版本,比如TLS 1.0版。
  <2> 一个客户端生成的随机数,稍后用于生成"对话密钥"。
  <3> 支持的加密方法,比如RSA公钥加密。
  <4> 支持的压缩方法。
2. [s ->c] server hello 消息,主要包含如下内容:
  <1> 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
  <2> 一个服务器生成的随机数,稍后用于生成"对话密钥"。
  <3> 确认使用的加密方法,比如RSA公钥加密。
  <4> 服务器证书。
  注:其中,<1>,<3>协商确定tls版本及加密方法;
  <4>客户端拿到服务器证书后,首先验证证书的合法性,
  从而确定服务器的合法情,并从证书中,提取中公钥信息。
3. [c ->s] 客户端验证证书没有问题后,
    将生成对称加密算法密钥的随机数通过rsa公钥加密后,
    发给服务器,该消息主要包含以下内容:
  <1> 一个随机数。该随机数用服务器公钥加密,防止被窃听。
  <2> 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  <3> 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。 
  注:由于rsa的私钥只有服务器持有,所以可以保证只有服务器 可以解密得到随机数,
  就算该消息被窃听,因为无法使用正确的私钥解密,也无法获取到随机数,
  从而无法生成对称加密的密钥信息,从而保证了通信的安全性。
4. [s ->c] 服务器收到客户端的响应后,通过私钥解密获取到第三组随机数,从而可以生成对称加密算法的密钥信息,并发消息通知客户端,接下来的数据都使用该密钥进行加密传输,消息主要包含以下内容:
  <1>编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  <2>服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
  这条消息发完之后,握手阶段都完成。之后就可以开始传送应用数据了。
  应用数据在传输之前,首先要附加上MAC secret,然后再对这个数据包使用协商的密钥进行加密。在服务端收到密文之后,使用协商的密钥进行解密,客户端收到服务端的数据之后使用协商的密钥进行进行解密,然后使用各自的write MAC key对数据的完整性包括是否被串改进行验证。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值