HTTPS

501 阅读3分钟

什么是HTTPS?

HTTPS就是HTTP+SSL/TLS

那什么是SSL/TLS呢?

TLS其实就是SSL的新版本,是在TCP之上应用层之下的加密协议,保证敏感数据传输的安全 性。人们还是习惯将加密协议称为SSL。

HTTPS的工作原理:

1. 客户端使用HTTPS的URL访问web服务器,要求与web服务器建立SSL连接(客户端会想服务器发送他所支持的协议版本、加密方法等)

2. web服务器收到客户端请求后,会将网站的证书信息(包含公钥)传送给客户端(web服务器在收到客户端请求之后,会自己生成密钥,即公钥S和私钥S,将公钥发给客户端,可是客户端并不知道服务器传过来的公钥有没有被修改过,所以客户端需要购买第三方机构提供的证书,第三方提供的证书保证了在公钥没被篡改过)

3. 客户端收到服务器发出的证书后,如果证书有问题,弹出警告,如果没问题,则生成一串随机数,称为私钥C,然后客户端用服务器传过来的公钥S对私钥C(该随机数)进行加密,形成私钥C。(为什么这么折腾呢?后面说原因)

4.服务器收到私钥C,用私钥S将私钥C解密成私钥C,然后把需要传递的数据用私钥C进行加密

5.服务器把加密的数据传送给客户端

6.客户端收到加密的数据,用私钥C进行解密,完成数据的传输

现在来说说第三点提到的“原因”:

这里面涉及到两个名词:对称加密和非对称加密

对称加密是指加密和解密用一致的密钥,特点是快

非对称加密是指密钥分为公钥和私钥,公钥加密、私钥解密(私钥好比唯一一把钥匙,公钥好比一锁,锁可以有很多,也不怕被别人看见,但是钥匙只有一把,被锁头锁上的数据只有一把私钥才能打开)特点是安全,但是慢。

https的流程综合了对称加密和非对称加密的优点,非对称加密快,使用一致的密钥,但是这有一个问题,服务端如何知道密钥呢,得需要客户端传给他啊,那在传递过程中就有可能会被别人窃取甚至都不需要窃取,因为也没有对密钥做任何措施,就相当于在传送明文,这样一来加密措施也失去了意义。所以HTTPs使用非对称密钥来加密对称加密的密钥(也就是上面说的的一串随机数---密钥C),也就是上面所说的密钥S。

总体来说,HTTPS利用对称加密的快捷性来加密报文,把真正加密解密的密钥(私钥C)用公钥S和私钥S(非对称加密)来加密,这就是HTTPS的工作流程。

参考博客:www.jianshu.com/p/a68ca8618…