Blog

Agility6

HTTPS的「S」

Tech

前言

本篇文章就来记录一下HTTP的S究竟是什么?

HTTP大家一定都是十分熟悉了,那么HTTP与HTTPS有什么不同呢?

  1. 多了个S

  2. HTTP是明文传输,容易有安全性的问题

  3. HTTPS是会加密传输的,并且需要CA证书

其实HTTPS重点是在这个S上,也就是SSL/TLS这就是HTTPS的核心,所以本篇文章也是从这两个进行展开的。

加密安全协议

SSL其实是TLS的前生它们都是安全加密协议,目前大部分浏览器都不支持SSL,而支持TLS。

到这里可以很清楚的知道,HTTPS需要保证安全性,那么就一定需要对数据进行加密,所以接下来先来说一说加密的知识吧。

对称加密

通俗来说,对称加密就是双方都是使用相同的加密规则,那么这个就称为对称加密。

那么如果有第三方知道这个加密规则,那么就有风险被破解了。

非对称加密

首先,先来讲讲如何得到一个安全的密钥。

首先用户A和用户B都拥有一个公钥和私钥,这时候会合并成公 + 私的进行传输,那么其中有可能被黑客窃取,但是没有关系,当双方获取到了对方的公+私钥,那么会和自己本身的私钥进行结合,那么这个结果就是一个安全的密钥了。

Diagram

那么非对称加密,就可以使用这个安全的密钥来进行加密了,这个就是非对称加密的核心了。

公开密钥是所有人都知道的密钥,私有密钥仅仅是持有方才有的密钥,一般来说私钥就放在服务器里,数据进过公钥加密就只能被私钥解密,数据经过私钥加密就只能被公钥解密。

这里类比一下客户端和服务器的关系

Diagram

证书

前面已经学习到了两种的加密方式了,但是我们还是不知道和我在沟通的是否是自己想要沟通的对象,因此需要服务端需要申请一张SSL证书,来告诉这个域名是经过验证的,这里证书还规定了私钥和公钥。

TLS

综上我们介绍了一些前置的知识,那么现在就来看看如何进行TLS握手呢?这里使用时TLS1.2,首先进行老生常谈的三次握手接下来就是TLS的握手了。

  1. 客户端说“你好”
  1. 服务器说“你好”
  1. 客户端回应

客户端和服务端有了这三次随机数,使用规定的加密算法,生成本次通信的「会话秘钥」

  1. 服务器的最后回应

最后TLS握手完毕,接下来客户端和服务器进入加密通行。