HTTPS的工作原理

1、背景

HTTPS协议是基于SSL/TLS,主要作用是对http传输的数据进行加密。现在https主要还是基于TLS。

2、HTTPS的工作原理

1、明文消息传输存在的安全隐患,黑客可以直接抓包获取到明文信息。
HTTPS的工作原理
2、由于明文的原因,使用加密方式进行加密,首先使用对称加解密的方式。这种方式虽然好,但是存在一个问题,因为对称加解密的秘钥是相同的,如果想和其他人通信,势必需要将秘钥传输给第三方,一旦黑客获取到了该秘钥,就可以进行解密了。
HTTPS的工作原理
3、使用非对称加密,非对称加密是使用公钥和私钥,其中公钥是用于加密,有且只有私钥能对公钥加密的数据进行解密,反之亦如此。所以使用该方式就是服务器端将公钥交给客户端,客户端使用公钥加密后将数据传输给服务端,服务端再使用私钥进行解密。
存在的问题:
1、客户端如何获取到公钥?
2、公钥在传输的过程中被调包了怎么办?
需要解决的问题:
如何让客户端获取到的公钥确实是我们自己的公钥:
HTTPS的工作原理
4、为了解决客户端获取到正确的公钥,使用第三方机构来解决。将服务端的公钥交给第三方机构,通过第三方机构的私钥对我们的公钥进行加密后(数字证书),再传输给客户端。客户端会有第三方机构的公钥来进行解密,从而获取到服务端的公钥。
即:客户端在请求服务端获取公钥的时候,我们服务端会请求第三方机构,将我们的公钥生成一个数字证书,然后将数字正证书返回给客户端,然后客户端通过本地存储的第三方机构提供的证书进行解密获取到Server端的公钥。

存在的问题:
既然第三方机构需要将解密数字证书的方式发给客户端,必然也会发给黑客,那么黑客也能进行解密。
HTTPS的工作原理

5、如何让黑客无法解密数字证书?
公司信息、网站信息、数字证书的算法、公钥
HTTPS的工作原理
HTTPS的工作原理

3、HTTPS流程小结

HTTPS的工作原理
1、客户端请求www.baidu.com
2、服务端会维护两个证书,分别是private.crt和public.crt,即私有证书和共有证书,这个是服务端向第三方机构获取得到的。
3、服务端返回共有证书public.crt给客户端
4、客户端会校验证书(根据颁发机构、指纹算法等)得到结果,如果匹配,则验证成功,如果不匹配,则提示不安全的警告。
5、验证通过后会生成一个随机数,生成随机数的最终目的是服务端和客户端要统一加解密的秘钥。
6、客户端首先会使用非对称加密来传输这个加密的随机数,即使用公钥来加密,然后服务端使用私钥来解密该key值。
7、最终服务端和客户端最终就使用对称加密来进行通信了(另一个原因就是非对称加密太消耗性能)