HTTPS:超文本传输安全协议
相较于HTTP明文传输,HTTPS增加了SSL/TLS进行了加密增加了通信的安全性。
SSL和TLS是两个不同的加密方法,SSL是TLS的前身,现在绝大多数浏览器使用的是TLS,所以着重了解以下TLS的概念即可。
首先了解以下加密的概念,信息传输的过程中为了防止别人监听我们就需要对传输的信息进行加密,加密模式有两种对称加密和非对称加密。
- 对称加密:双方使用相同的公钥和私钥,容易被暴力破解
- 非对称加密:两个人使用不同的私钥和公钥
非对称加密的过程:
- 客户端发送自己的公钥
- 服务器发送自己的公钥,以及使用客户端公钥加密的自己的私钥
- 客户端发送使用服务器公钥加密的私钥
- 现在双方都有对方的私钥和公钥就可以进行信息传输了
对称加密也存在它的问题,比如沟通的对象并不能保证是真实的客户端,一旦服务器的私钥泄漏会造成很大的问题,TLS考虑到这种情况采用了两种策略。
- 数字证书验证
- 由非对称加密转向对称加密
数字证书这个东西相信都见过,浏览一些问题网站时经常会遇到浏览器提示对方的数字证书有风险
HTTPS四次握手
-
客户端发送一个client hello,告诉服务端采用的TLS版本及支持的加密套件,
同时还有一个随机数这里记作r1
-
服务器发送一个server hello,告诉客户端,服务器确认支持的TLS版本号及选择的加密套件,
生成随机数r2
,同时发送服务器的CA证书,如果服务器需要客户端的数字证书的话在这个阶段发出请求 -
客户端的浏览器根据自己的证书信任列表判断这个服务器是否可信,没问题的话,客户端发送一个client key exchange,使用CA证书中的公钥加密一个
随机数r3
(预主密钥),同时告诉服务器接下来使用会话密钥通信并提取所有握手数据的摘要供服务器校验 -
服务器使用私钥对预主密钥进行解密得到第三组随机数,然后使用约定的加密算法使用三组随机数生成会话密钥,服务器进行最后的响应,通知客户端接下来可以使用会话密钥了,同时把之前握手的数据进行提取摘要发送过去供客户端校验
HTTPS优点
- 整个过程中私钥并未进行传输所以安全性更高,如果服务器的私有不泄露一般不会出现信息泄漏的情况
- 引入了CA证书,有了证书的加持连接行为变得可控了许多
下面简单看一下数组证书的内容
使用数字证书的好处可以举一个例子,比如半夜你正在一个使用HTTP的网站看小说,这个时候你的室友想要整蛊你一下,他就可以通过一些工具模拟成一个中间人,你和他之间进行交换密钥,他和网站交换密钥,它可以修改你发送的信息然后修改之后再转发给服务器,这个过程神不知鬼不觉。
CA证书验证过程
- 使用颁发证书机构提供的公钥提取数字签名得到一个证书内容的哈希值,然后自己对证书内容进行哈希,比较两段内容是否一样
所以说引入了CA证书后就可以确保和你通信的就是他本人了,他对证书内容进行修改的话也会因为没有颁发机构的私钥而无法得到正确的数字签名。