HTTPS 对称加密和非对称加密
对称加密是什么,非对称加密是什么
对称加密即:加密和解密用的是同一个密钥
非对称加密即:加密和解密用的是不同的密钥
—> 公钥负责加密,私钥负责解密。
—> 用公钥加密过的密文,只有用私钥才能解密。
—> 用私钥加密过的密文,只有用公钥才能解密
HTTP和HTTPS的区别
HTTPS会在HTTP和TCP之间加一层TLS/SSL加密连接
- HTTP是明文传输,会有被数据篡改和获取数据的风险。HTTPS在连接之间加了一层TLS/SSL连接,能够一定程度上保证加密性
- HTTP直接进行TCP连接后就可以进行HTTP的请求与响应。而HTTPS在建立了TCP连接后还需要建立TLS的握手过程,双发提供了会话密钥才能够进行加密报文传输
- HTTP的默认服务器端口是80,HTTPS的默认服务器端口是443
- 性能差异,HTTP只需要建立TCP连接就行了,而HTTPS建立了TCP连接后还要建立TLS/SSL握手,会增加RTT,连接的时间会增加,并且缓存也会比HTTP复杂,会通过CDN进行优化传输
- HTTPS需要SSL/TLS的证书,这个是由权威机构进行发布的,这个也是为了去验证服务器的身份信息。
HTTPS的工作原理
HTTPS在建立TCP连接后还需要建立TLS/SSL的握手,也就是在客户端和服务器端建立一个会话密钥之后,双方通过会话密钥进行对称加密传递信息。
- 客户端发送Hello,客户端向服务器端建立加密通话请求。
报文包括以下信息:
1. 随机数A
2. TLS版本
3. 支持的加密算法列表 - 服务器发送hello给客户端,收到客户端的请求之后发送响应。
报文包括以下信息:
1. 随机数B
2. 确定TLS版本,如果不支持该版本会返回断开加密连接
3. 服务器的证书信息,其中会包括服务器的公钥
4. 从客户端提供的加密算法列表中选择一个,比如RSA加密算法 - 客户端接收到服务器的响应报文后,先通过CA公钥,这个CA公钥一般放在浏览器或者操作系统中,对服务器端提供的证书信息进行验证。并且拿出证书信息中的服务器公钥。
客户端生成一个随机数pre-master,使用服务器公钥进行加密。然后向服务器发送报文- 加密后的pre-master
- RSA加密算法更改成后续使用会话密钥加密信息的对称加密模式
- 之前所有信息的摘要
会话密钥是由随机数A+随机数B加pre-master组成
- 服务器接收到客户端的finished报文后,先拿出pre-master用自己的私钥进行解密拿到解密后的pre-master,组装会话密钥。向客户端发送最后的相应信息
- RSA算法改变模式
- 之前所有信息的摘要
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Priska's blog!