HTTPS详解笔记

Https笔记

还是为了面试才去了解的HTTPS,话说这么看起来面试真的能让人快速学习很多东西!

为什么要有HTTPS

在HTTPS出现之前,在浏览器与服务器进行通信的协议无疑就是HTTP了,但是HTTP是明文传递的,任何人在中间劫持了请求都能够看到所传递的信息,安全性大大降低!
所以就需要将通信的内容进行加密。
加密算法可以分为对称加密非对称加密
- 对称加密
就是浏览器与服务器协商一个秘钥,用同一个秘钥对内容进行加密与解密。
这样的好处是非常简单,因为对称加密消耗的计算资源较小(与非对称加密对比而言)。
但是如何将密钥传递给对方是一个很难解决的问题,因为黑客可以在中间接取密钥,照样可以解密。
- 非对称加密
通过一个秘钥与一个公钥对信息进行加密与解密,秘钥加密的信息只有公钥能解密,公钥加密的信息只有秘钥能解密,所以服务器保留秘钥,浏览器获取服务器的公钥,双方将内容加密之后再传输给对方,对方再解密。
缺点是非对称加密消耗的计算资源很大。
由于公钥是公开的,所以依然有可能被黑客获取到信息,通过公钥解密服务器传递过来的信息。甚至在双方建立连接的时候,就将服务器的公钥进行调包,然后传递给浏览器。

HTTPS

https的主要思想就是通过非对称加密来加密对称加密的密钥,然后双方再通过对称加密进行通信。
那么如果保证获取到的公钥是服务器发送过来的呢?
通过数字证书来保证上述问题,首先一个数字证书包括下列内容:
- 签发者
- 证书用途
- 网站公钥
- 签名算法
- 签名Hash算法
- 证书到期时间等

有一个机构叫认证中心CA(Certificate Authority),CA给网站颁发了一个数字证书,并且会对证书内容通过Hash算法进行内容摘要得到hash值,再通过CA的密钥对hash值进行加密,附加在证书尾部。而浏览器会有CA的公钥,所以可以通过公钥解密得到hash值,再通过同样的hash算法对证书进行内容摘要,就可以得到另外一个hash值,如果两个hash值一样,那么说明证书没有被串改,证书里面的公钥是可以被信任的。所以浏览器就能安全得到服务器的公钥。

浏览器与服务器建立连接的时候,就会变成如下过程:
1. 浏览器发送一个随机数A给服务器
2. 服务器返回一个B给浏览器,并返回数字证书
3. 浏览器验证证书的合法性,获取服务器的公钥,再通过公钥加密一个随机数C,发送给服务器
4. 服务器通过私钥解析随机数C,双方通过将随机数A,B,C通过算法结合,用于之后的对称加密通信。

猜你喜欢

转载自blog.csdn.net/q1242027878/article/details/80377129