HTTPS个人理解

  • TLS是基于SSL开发的协议,一般来说HTTP上面加一层SSL就是我们常说的HTTPS,SSL初始化有12个步骤,其中前4次为握手
  • HTTPS主要是在HTTP基础上保证了:认证、加密、完整性校验

当客户端(浏览器)用HTTPS向服务器发请求时

注意区分key1和key2,key1密钥对是本身就有的,key2密钥对于不同的客户端请求是临时生成的、特异性的、每个客户端都生成一次

1.服务器向CA申请SSL证书

  • CA本身有非对称密钥对,浏览器中保存了大部分可靠的CA机构公钥
  • 服务器将其公钥(pubKey1)交给CA,CA用其私钥添加签名(当客户端请求的时候用CA公钥验证签名

2.客户端主动建立SSL的4次握手+8次初始化

  • 客户端发送自己支持的SSL版本非对称密钥生成算法pubKey2和priKey2)等
  • 服务器返回自己的公钥证书

3.SSL握手:客户端判断服务器是否有效

此时客户端拿到了服务器的公钥(pubKey1)和签名

  • 浏览器用CA的公钥,对pubKey1验签
  • 如果可靠,客户端先和服务器进行SSL的初始化

4.SSL初始化:生成本次的非对称密钥对

此时客户端知道该服务器可靠了,但是我们针对不同的客户端访问同一个服务器,需要有不同的非对称密钥对来保证特异性

  • 客户端用服务器的pubKey1加密生成的一个随机数
  • 客户端和服务器都用这个随机数生成非对称密钥对(keys2)(对于这次连接是唯一的)

HTTPS个人理解_第1张图片

5.解决非对称加密速度慢的问题

此时我们利用服务器原有的keys1,对每一个访问的客户端都生成了其对应的keys2;但是非对称加密速度比对称加密慢2~100倍

  • 对于每一个客户端,生成一个对称密钥,用pubKey2加密发给服务器
  • 服务器用priKey2解密,获取这个对称密钥
  • 因为keys2的特异性,其他客户端是不会知道这个对称密钥的,此后的建立在SSL上的HTTP请求都可以用这个对称密钥加密解密了,几乎不存在泄密风险

你可能感兴趣的:(https,ssl,服务器)