HTTPS原理

前置知识

在阅读本文章之前需要知道什么是哈希,什么是对称加密,什么是非对称加密,什么是数字证书,什么是数字签名? 什么是数字证书(Digital Certificate)?什么是数字签名(Digital Signature)_codereasy的博客-优快云博客

SSL/TLS协议是什么

其中SSL/TLS是一种介与于传输层(比如TCP/IP)和应用层(比如HTTP)的协议。它通过"握手协议(Handshake Protocol)"和"传输协议(Record Protocol)"来解决传输安全的问题。SSL/TLS是一个可选层,没有它,使用HTTP也可以通信.

SSL/TLS的运行过程

SSL/TLS有两个阶段:握手协议传输协议

握手协议就是建立起连接的过程。在这个阶段,我们采用非对称加密,这个过程完毕后会生成一个对话秘钥

这个对话秘钥使用对称加密进行传输。为什么不从头到尾都使用非对称加密?之因为非对称加密是很耗性能的。而握手协议过程中,迫不得已,使用非对称加密。在数字证书的加密与验证的过程中,使用非对称加密保证了公钥的安全性。

SSL/TLS运行过程

客户端发送请求:

在这一步客户端主要向服务端发出以下信息:

  • 支持的SSL/TLS协议版本
  • 支持的加密套件列表(cipher suite)
  • 支持的压缩算法列表(compression methods),用于后续的压缩传输
  • 产生的一个随机数random_C(random number),客户端有存留,稍后用于生成"对话密钥(session key)"


服务端回应:

服务端接收到客户端的请求,进行回应

  • 根据客户端支持的SSL/TLS协议版本,和自己的比较确定使用的SSL/TLS协议版本,如果没有合适的,对话关闭
  • 回应加密套件,压缩算法
  • 产生的一个随机数random_S(random number),服务端有存留,稍后用于生成"对话密钥(session key)"
  • 服务端数字证书(证明自己的身份,传递公钥)
  • 如果需要验证客户端,发出请求,要求客户端提供证书


客户端回应:

客户端收到服务端的回应后。会进行以下操作:

首先,客户端会验证服务端的数字证书。如果证书有问题,则会有相应提示。如果证书没有问题继续向服务端发送以下信息:

  • 如果服务端有请求证书,发送自己的数字证书
  • 在产生一个随机数pre-master key(random number),并且用服务端数字证书中的公钥加密
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

服务端的回应(最后一步)

如果有客户端的证书,就先验证客户端的证书

  • 使用自己的私钥,对随机数pre-master key解密,这时客户端和服务端各自有了三个随机数,然后用原来协商的加密方式生成本次通话使用的会话密钥(session key)
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

这时客户端和服务端都有了session key。下面开始使用 session key 对称加密数据,进行传输,就进入了下一个阶段,传输协议过程。

参考资料:

HTTPS从原理到应用(三):SSL/TLS协议 - 简书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值