说一下 HTTP 缓存及缓存代理

关于http缓存在上一篇文章里有了详细介绍

缓存代理就是让代理服务器接管一部分的服务端的http缓存,客户端缓存过期之后就近到代理服务器的缓存中获取,代理缓存过期了才请求源服务器,这样流量大的时候能明显降低源服务器的压力

注意响应头字段

  • Cache-Control: 值有public时,表示可以被所有终端缓存,包括代理服务器CDN。值有private时,只能被终端浏览器缓存,CDN、代理等中继服务器都不可以缓存。

HTTPS

HTTPS 是超文本传输安全协议,即HTTP + SSL/TLS。说白了,就是一个加强版的HTTP

HTTP本文开始讲了,所以我们要理解HTTPS的精华,就要先弄清楚这个SSL/TLS

SSL/TLS

一张图让你理解SSL和TLS的关系

如图,TLS是SSL的升级版,而且TLS1.2版本以下都已废弃,目前主要用的是TLS 1.2TLS 1.3。而OpenSSL则是开源版本

那么它到底是个啥呢?

浏览器和服务器通信之前会先协商,选出它们都支持的加密套件,用来实现安全的通信。

随便拿出一个加密套件举例,如:RSA-PSK-AES128-GCM-SHA256,就是长这样,代表什么意思呢,我们看图

说一下 HTTP 缓存及缓存代理插图

  • RSA:表示握手时用RSA算法交换密钥
  • PSK:表示使用PSK算法签名
  • AES128-GCM:表示使用AES256对称加密算法通信,密钥长度128,分组模式GCM。TLS 1.3中只剩下称加密算法有AESCHACHA20,分组模式只剩下GCMPOLY1305
  • SHA256:表示使用SHA256算法验证信息完整性并生成随机数。TLS 1.3中哈希摘要算法只剩下SHA256SHA384

为什么需要用到这么多算法呢?

为了保证安全,TLS需要保证信息的:机密性可用性完整性认证性不可否认性,每一种算法都有其特定的用处

HTTPS 中 TLS 的加密算法

为什么说https是安全的?
https一定是安全的吗?(考察https中间人劫持,我另一篇有关于详细介绍网络安全)
有什么解决办法?
https的证书校验过程是怎么样的?
证书校验用到了哪些算法?

对称加密算法

就是加密和解密使用同一个密钥。如AES、DES。加解密过程:

  1. 浏览器给服务器发送一个随机数client-random和一个支持的加密方法列表
  2. 服务器给浏览器返回另一个随机数server-random和双方都支持的加密方法
  3. 然后两者用加密方法将两个随机数混合生成密钥,这就是通信双上加解密的密钥

问题是双方如何安全的传递两个随机数和加密方法,直接传给客户端,那过程中就很可能被窃取,别人就能成功解密拿到数据,往下看

不对称加密算法

就是一对密钥,有公钥(public key)和私钥(private key),其中一个密钥加密后的数据,只能让另一个密钥进行解密。如RSAECDHE。加解密过程:

  1. 浏览器给服务器发送一个随机数client-random和一个支持的加密方法列表
  2. 服务器把另一个随机数server-random加密方法公钥传给浏览器
  3. 然后浏览器用公钥将两个随机数加密,生成密钥,这个密钥只能用私钥解密

使用公钥反推出私钥是非常困难,但不是做不到,随着计算机运算能力提高,非对称密钥至少要2048位才能保证安全性,这就导致性能上要比对称加密要差很多

所以!

TLS实际用的是两种算法的混合加密通过 非对称加密算法 交换 对称加密算法 的密钥,交换完成后,再使用对称加密进行加解密传输数据。这样就保证了会话的机密性。过程如下

  1. 浏览器给服务器发送一个随机数client-random和一个支持的加密方法列表
  2. 服务器把另一个随机数server-random加密方法公钥传给浏览器
  3. 浏览器又生成另一个随机数pre-random,并用公钥加密后传给服务器
  4. 服务器再用私钥解密,得到pre-random
  5. 浏览器和服务器都将三个随机数用加密方法混合生成最终密钥

这样即便被截持,中间人没有私钥就拿不到pre-random,就无法生成最终密钥。

可又有问题来了,如果一开始就被DNS截持,我们拿到的公钥是中间人的,而不是服务器的,数据还是会被窃取,所以数字证书来了,往下看,先简单说一下摘要算法

摘要算法

主要用于保证信息的完整性。常见的MD5算法散列函数哈希函数都属于这类算法,其特点就是单向性无法反推原文

假如信息被截取,并重新生成了摘要,这时候就判断不出来是否被篡改了,所以需要给摘要也通过会话密钥进行加密,这样就看不到明文信息,保证了安全性,同时也保证了完整性

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 说一下 HTTP 缓存及缓存代理

提供最优质的资源集合

立即查看 了解详情