前言
本篇文章就来记录一下HTTP的S究竟是什么?
HTTP大家一定都是十分熟悉了,那么HTTP与HTTPS有什么不同呢?
多了个SHTTP是明文传输,容易有安全性的问题
HTTPS是会加密传输的,并且需要CA证书
其实HTTPS重点是在这个S上,也就是SSL/TLS这就是HTTPS的核心,所以本篇文章也是从这两个进行展开的。
加密安全协议
SSL其实是TLS的前生它们都是安全加密协议,目前大部分浏览器都不支持SSL,而支持TLS。
到这里可以很清楚的知道,HTTPS需要保证安全性,那么就一定需要对数据进行加密,所以接下来先来说一说加密的知识吧。
对称加密
通俗来说,对称加密就是双方都是使用相同的加密规则,那么这个就称为对称加密。
那么如果有第三方知道这个加密规则,那么就有风险被破解了。
非对称加密
首先,先来讲讲如何得到一个安全的密钥。
首先用户A和用户B都拥有一个公钥和私钥,这时候会合并成公 + 私
的进行传输,那么其中有可能被黑客窃取,但是没有关系,当双方获取到了对方的公+私钥,那么会和自己本身的私钥进行结合,那么这个结果就是一个安全的密钥了。
那么非对称加密,就可以使用这个安全的密钥来进行加密了,这个就是非对称加密的核心了。
公开密钥是所有人都知道的密钥,私有密钥仅仅是持有方才有的密钥,一般来说私钥就放在服务器里,数据进过公钥加密就只能被私钥解密,数据经过私钥加密就只能被公钥解密。
这里类比一下客户端和服务器的关系
证书
前面已经学习到了两种的加密方式了,但是我们还是不知道和我在沟通的是否是自己想要沟通的对象,因此需要服务端需要申请一张SSL证书,来告诉这个域名是经过验证的,这里证书还规定了私钥和公钥。
TLS
综上我们介绍了一些前置的知识,那么现在就来看看如何进行TLS握手呢?这里使用时TLS1.2,首先进行老生常谈的三次握手接下来就是TLS的握手了。
- 客户端说“你好”
- 客户端会发送支持的TLS协议版本,如TLS1.2版本
- 生成随机数,用于会话密钥条件条件之一
- 当前我支持的加密套件
- 服务器说“你好”
- 确认TLS是否支持,不支持则关闭加密通信
- 服务器生成随机数,用于会话加密之一
- 确认密码套件
- 服务器的数字证书
- 客户端回应
- 收到服务器的回应,会确认证书的真实性
- 如果没有问题则取出证书的公钥,使用加密报文,向服务器发送以下信息,一个随机数(会被服务器公钥加密)、加密通信算法改变通知,表示随后的信息用会话秘钥加密通行
- 「客户端回应」这一步生成的随机数,是第三个了。会发给服务端,因此客户端和服务端随机数都是一样的。
客户端和服务端有了这三次随机数,使用规定的加密算法,生成本次通信的「会话秘钥」
- 服务器的最后回应
- 服务器收到也收到三个随机数,使用规定的加密算法,计算本次的「会话秘钥」
最后TLS握手完毕,接下来客户端和服务器进入加密通行。